【发布时间】:2019-03-11 13:25:07
【问题描述】:
如果我有一个用存储声明的变量,即 int x;并通过调用 constexpr 函数对其进行初始化,它将具有在 main 中的任何代码开始执行之前确定的值。
constexpr int get_value() { return 5;}
int x = get_value();
int main() {
return x;
};
【问题讨论】:
-
关于 constexpr。是关于那个的另一个问题。
-
@BlairDavidson:
constexpr会如何改变? -
@BlairDavidson
constexpr对于函数仅表示“至少有一组参数可以进行编译时评估”。无论如何,链接问题的答案清楚地表明初始化发生在main之前。 -
您是否想删除它。
-
@BlairDavidson A:是 / Constant initialization 发生是因为:1。
x是一个具有静态存储持续时间的变量; 2。其初始化get_value()的完整表达式是core constant expression。它发生在程序执行之前as a consequence of program initiation。 顺便说一句,由于这个问题本身不仅仅是“存储时间”,它有它自己的价值,我认为这个问题也不应该被关闭。