
const
应将业务逻辑移入独立函数(如run)并用defer清理资源,main仅负责调用、打印错误和退出;os.Exit会跳过defer导致资源泄漏,log.Fatal同理;需按语义区分退出码并用常量定义。
decltype原封不动提取表达式编译期类型,含引用、const等限定符;括号决定语义:decltype(x)得变量声明类型,decltype((x))得左值引用类型。
std::flat_map查找更快因其底层用连续vector存储已排序pair,利于CPU缓存预取;插入删除慢因需移动后续元素(O(n)),而map仅改指针(O(logn))。
std::move仅将左值强制转换为右值引用,不移动数据;是否真正移动取决于后续是否调用匹配的移动构造/赋值函数,且源类型需支持移动语义。
std::monostate是专为std::variant设计的零大小默认可构造占位类型,用于显式表示“未初始化”状态;它不携带数据、无可比较性,仅通过std::holds_alternative安全...
C++函数不能直接导出为CAPI,因namemangling导致符号不一致,且C++特性(如类、模板、STL)破坏CABI稳定性;必须用opaquepointer、extern"C"...
当语法中存在字面量(如"RS")与正则终端(如/R[0-7]|RS/)重叠时,Lark的词法分析器可能因匹配优先级不明确而产生解析歧义,导致不同版本行为不一致;解决关键是将语义不同...
引用必须初始化且不可重绑定,指针可为空或后期赋值;sizeof和typeid对引用返回所引类型的属性,指针则返回地址相关属性;引用传参避免拷贝但非const引用不接受临时量。
constexpr函数仅在参数为编译期常量时才执行编译期计算,否则退化为普通函数调用;constexpr变量必须用常量表达式初始化;constexpr构造函数要求所有成员明确初始化;consteval...
栈回退是throw触发后按构造逆序调用已构造局部对象析构函数的过程,需依赖编译器生成的unwind表查找析构信息,开销与栈深度和对象数量正相关。