gpt4 book ai didi

c++ - C++11 中的 constexpr 概念

转载 作者:太空狗 更新时间:2023-10-29 19:45:18 26 4
gpt4 key购买 nike

我打算了解 C++ 中 constexpr 的概念。我的理解是 constexpr 在编译时得到评估。在 here ,我找到了一个示例,其中包含以下代码段。

int z[30];

constexpr auto e2 = &z[20] - &z[3];

他们在编译时计算地址之间的差异。当我们不知道编译时地址的实际值时,如何在编译时对其进行评估?

最佳答案

constexpr auto e2 = &z[20] - &z[3]; 

只是计算第 3 个和第 20 个元素之间的偏移量。所以没有必要知道地址。

另一方面,以下示例不起作用,因为 z[20]t 的地址是在运行时计算的。

int z[30];
int t;
constexpr auto e2 = &z[20] - &t;

正如 Passer By 所指出的,根据标准(7.6.6 Additive operators,最后一句),这是未定义的行为:

Unless both pointers point to elements of the same array object, or one past the last element of the array object, the behavior is undefined.

关于c++ - C++11 中的 constexpr 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51766516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com