constinit
是P1143中提出的 C++20 中的新关键字和说明符。
标准中提供了以下示例:
const char * g() { return "dynamic initialization"; }
constexpr const char * f(bool p) { return p ? "constant initializer" : g(); }
constinit const char * c = f(true); // OK
constinit const char * d = f(false); // ill-formed
想到几个问题:
是什么
constinit
意思?为什么介绍它?我们应该在哪些情况下使用它?它是否使变量不可变?是暗示
const
还是constexpr
?变量可以同时是
const
和constinit
吗?constexpr
和怎么样constinit
?说明符可以应用于哪些变量?为什么我们不能将它应用于非
static
、非thread_local
变量?它有什么性能优势吗?
该问题旨在用作constinit
一般即将提出的问题的参考。