constexpr/consteval/constinit三者的区别
请区分constexpr、consteval(C++20)和constinit(C++20)三个关键字。
回答
苦行僧
constexpr:可能编译期求值。consteval:强制编译期求值。constinit:保证静态变量常量初始化(之后可变)。 constexpr函数可在运行期调用;consteval调用必须在编译期;constinit用于全局/静态变量避免初始化顺序问题。
请区分constexpr、consteval(C++20)和constinit(C++20)三个关键字。
constexpr:可能编译期求值。consteval:强制编译期求值。constinit:保证静态变量常量初始化(之后可变)。 constexpr函数可在运行期调用;consteval调用必须在编译期;constinit用于全局/静态变量避免初始化顺序问题。