rumeo Asked:2022-12-23 13:04:31 +0000 UTC2022-12-23 13:04:31 +0000 UTC 2022-12-23 13:04:31 +0000 UTC constexpr 和 const constinit 有什么区别? 772 全局命名空间中的声明有何不同? const constinit auto x = 42; constexpr auto y = 42; c++ 1 个回答 Voted Best Answer HolyBlackCat 2022-12-23T15:30:16Z2022-12-23T15:30:16Z 具体来说,这些没有什么不同,即使您删除constinit了 , 因为const具有 constexpr 初始值设定项的整数变量会自动成为 constexpr。 在一般情况下,当然是有区别的。 constinit如果初始值设定项不是 constexpr,则 maximum 会导致编译错误。如果是 constexpr,则它什么都不做1,因此差异const与constexpr变量之间相同。 一个有趣的特性 -constinit它只检查 constexpr-ness 的初始化,并constexpr另外检查析构函数。 1除了对thread_local变量的巧妙优化:https ://en.cppreference.com/w/cpp/language/constinit
具体来说,这些没有什么不同,即使您删除
constinit了 , 因为const具有 constexpr 初始值设定项的整数变量会自动成为 constexpr。在一般情况下,当然是有区别的。
constinit如果初始值设定项不是 constexpr,则 maximum 会导致编译错误。如果是 constexpr,则它什么都不做1,因此差异const与constexpr变量之间相同。一个有趣的特性 -
constinit它只检查 constexpr-ness 的初始化,并constexpr另外检查析构函数。1除了对
thread_local变量的巧妙优化:https ://en.cppreference.com/w/cpp/language/constinit