
求值
constexpr函数仅在参数为编译期常量时才执行编译期计算,否则退化为普通函数调用;constexpr变量必须用常量表达式初始化;constexpr构造函数要求所有成员明确初始化;consteval...
ifconstexpr是编译期分支,条件必须为常量表达式,未选中分支被彻底丢弃;普通if是运行期分支,两分支均参与编译且需语法合法。
const变量有类型且受编译器类型系统管理,#define宏无类型、仅为预处理器文本替换;前者支持类型检查、作用域控制、调试识别和模板推导,后者易引发命名污染、调试困难及求值错误。
三目运算符是C++唯一三元表达式,语法为condition?expr1:expr2;要求expr1与expr2可隐式转为同一类型,仅执行对应分支,禁用void、副作用操作及复杂语句。
constexpr函数仅在参数为编译期常量时才执行编译期计算,否则退化为普通函数调用;constexpr变量必须用常量表达式初始化;constexpr构造函数要求所有成员明确初始化;consteval...
constinit保证变量在静态初始化阶段完成初始化,即程序进入main前由常量表达式初始化,禁止动态初始化,不隐含const或constexpr,仅适用于命名空间作用域或静态成员。
constexpr函数仅在需常量表达式时编译期求值,否则退化为运行时调用;其体内容纳操作受限,变量初始化须为常量表达式且类型为字面量类型,不可与const混用。
三目运算符是C++唯一三元表达式,语法为condition?expr1:expr2;要求expr1与expr2可隐式转为同一类型,仅执行对应分支,禁用void、副作用操作及复杂语句。
const变量有类型且受编译器类型系统管理,#define宏无类型、仅为预处理器文本替换;前者支持类型检查、作用域控制、调试识别和模板推导,后者易引发命名污染、调试困难及求值错误。
constexpr函数仅在参数为编译期常量时才执行编译期计算,否则退化为普通函数调用;constexpr变量必须用常量表达式初始化;constexpr构造函数要求所有成员明确初始化;consteval...