regex, 库尽量以头文件实现, 但也有并行库这种必须深入编译器的库
用通用而非特殊的手段来实现特性: 显式类型转换
让特性对专家和新手都适用: 统一初始化表达式
增强类型安全: enum class...不但可以调用基类的构造函数, 也可以调用当前类的其他构造函数, 这样就能进一步减少重复代码
但要注意委派构造不能和普通的初始化列表共用, 因为目标构造(初始化列表)总是先于委派构造被调用, 这会导致目标构造的参数无效...但显然这种做法损失性能
只要定义中出现了左值引用, 引用折叠规则就会将其变为左值引用, 这是std::forward()的核心原理
编译器优化的时候本身就打开了返回值优化功能, 因此返回右值并不是很必要的事...语法扩展
函数前面加上explict可以防止参数发生隐式类型转换, 用于构造函数和operator中
不要将explict与delete共用, 因为这相当于删去了显式转换版本的函数, 可能会留下默认的隐式转换的实现...SFINEA的原因int对f1的尝试不算做实例化的error, 而属于匹配过程中的一次failure
f(10);
}
基于对这个匹配过程的标准化描述, 我们可以无关编译器地对模板匹配的可行性进行判断