(C++20 关键字)用于强制具有静态/线程存储期的变量必须在编译期完成初始化(即“常量初始化”);若只能进行运行期动态初始化,则会编译报错。它强调“初始化必须尽早(编译期)完成”,但不等同于常量表达式(变量仍可在之后被修改)。
/ˌkɑːnˈstɪnɪt/
The constinit variable is initialized before main() starts.
constinit 变量会在 main() 开始之前完成初始化。
Using constinit prevents the “static initialization order fiasco” by rejecting any dynamic initialization across translation units.
使用 constinit 可以通过拒绝跨编译单元的动态初始化来避免“静态初始化顺序灾难”。
constinit 是由 const(constant,常量)与 init(initialize,初始化)的缩合/拼接而来,表达的核心意思是“要求常量初始化(编译期初始化)”。
constinit)constinit)constinit 的语义与用法有条目说明)