在C++11的标准中提出SFINEA的动机是当年C++98中并没有对这个规则进行标准化的描述, 因此各个编译器对于函数模板的匹配规则都是混乱的, 因此新标准提出SFINEA来使程序员能按照自己的想象来理解编译器并令其能精确匹配我们所需要的函数...}
这个特性在C++20中被concept以更好的语法取代
4 新手易学, 老兵易用
auto
auto是静态类型推导, 必须被初始化
auto本质上是一个类型占位符, 在编译的时候推导出类型然后以类似字面替换的方式进行使用...auto和cv限制符(cv-qualifier, 指const和volatile)一起使用时, auto无法带走变量的cv限制, 因此需要我们额外写清楚对应的限制
auto可以用来在一个表达式中声明多个变量...如果目标是被重载的函数则编译错误
否则, 对于带括号的表达式, 如果目标是将亡值, 那么返回右值引用
对于带括号的表达式, 如果目标是左值, 返回左值引用
否则返回目标本身类型
推导四规则中最麻烦的是规则...{ Name0, Name1 };直接获得了强作用域, 转换限制, 可指定底层类型三大优点
其中通过上面代码中在类型名冒号后面写所需的type, 我们可以指定枚举属于type类型的元素的集合, 同时原生的