
function
std::move_only_function不是std::function的升级版,因其语义不同:前者要求可移动但不可拷贝,后者要求可拷贝;它通过省略拷贝相关虚函数表项、避免对齐冗余、支持原地构造m...
defer在循环中显著拖慢执行,因每次调用均分配_defer结构体并维护链表,高频场景下引发大量小对象分配与调度开销;应改用显式调用或抽离为独立函数统一defer。
Lambda中直接用this会报错,因默认不捕获this指针;需显式写[this]才能访问成员,但存在悬空指针风险;可用[*this]按值复制对象避免该问题。
std::apply用于解包tuple并调用可调用对象,将tuple元素作为参数完美转发给函数或lambda,要求参数类型、数量、顺序与tuple元素严格匹配,仅支持tuple-like类型。
std::visit必须覆盖std::variant的所有可能类型,否则编译失败;推荐用overload结构实现类型安全的“伪模式匹配”,并显式处理std::monostate;访问器应轻量,复杂逻辑...
函数下推不保证索引可用,索引生效前提是WHERE中索引列以原始形式参与比较;如UPPER(name)=‘ALICE’无法走name索引,而name=‘alice’可以。
编译器仅在类未声明任何构造函数且实际需要默认构造时才合成默认构造函数;它不初始化内置类型,仅调用基类和成员的默认构造,且合成函数为public、无noexcept说明。
std::function比函数指针更通用但非绝对更好:函数指针轻量零开销可内联,而std::function支持lambda、bind和成员函数但有类型擦除开销及潜在堆分配。
在document上用addEventListener(‘keydown’,handler,true)监听全局快捷键最可靠,需用e.preventDefault()阻止默认行为,通过e.ctrlKey...
零成本抽象指高级抽象不比手写底层代码多花代价;其核心是编译期模板实例化与内联消除运行时开销,但误用虚函数、函数指针、未优化或定义不可见会破坏该特性。