5
constexpr int f() { return 0; }
int g() { return 0; }

constexpr auto c1 = f(); // OK
constinit auto c2 = f(); // OK

constexpr auto d1 = g(); // ill-formed
constinit auto d2 = g(); // ill-formed

int main() {}

如上面的代码所示,我找不到constinit和之间的任何区别constexpr

constinit和之间的真正区别是constexpr什么?


更新:

相关的 C++20 中有什么?constinit没有明确说明 和 之间的constinit区别constexpr

4

1 回答 1

6

变量是常量初始化的constinit,但不能在常量表达式中使用,甚至不能自动常量。您main可以合法地包含此行

c2 = 2; 

是的,初始化后可以修改。

于 2020-06-18T07:27:09.383 回答