yad*_*dhu 3 c++ constexpr c++11
我将通过C++中的constexpr概念.我的理解是constexpr在编译时得到评估.在这里,我找到了一个示例,他们有以下代码段.
int z[30];
constexpr auto e2 = &z[20] - &z[3];
Run Code Online (Sandbox Code Playgroud)
他们正在计算编译时地址之间的差异.当我们在编译时不知道地址的实际值时,如何在编译时评估它?
Mik*_*yke 10
constexpr auto e2 = &z[20] - &z[3];
Run Code Online (Sandbox Code Playgroud)
只计算第三个和第二十个元素之间的偏移量.所以没有必要知道地址.
另一方面,以下示例不起作用,因为在运行时评估z[20]和的地址t.
int z[30];
int t;
constexpr auto e2 = &z[20] - &t;
Run Code Online (Sandbox Code Playgroud)
正如所指出的那样,Passer By根据标准是不确定的行为(7.6.6附加运算符,最后一句):
除非两个指针指向同一个数组对象的元素,或者指向数组对象的最后一个元素,否则行为是未定义的.
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |