【发布时间】:2020-01-10 16:42:56
【问题描述】:
constinit是P1143中提出的C++20中新的keyword和specifier。
标准中提供了以下示例:
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 的一般问题的参考。
【问题讨论】: