大括号初始化会制止类型收窄
大括号的返回值是initializer_list, 可以用作函数的一种重载参数
大括号也可以在return, 一般用来构造临时变量, 具体构造出来的临时变量还是依靠声明的返回值决定...由于类似字符替换的特性, 表达式auto t = 1, &r = t, *p = &r;是合法的
auto不能作为形参的类型, 需要泛型的时候还是应该用模板处理
auto禁止对结构体中的非静态成员进行推导...如果目标是被重载的函数则编译错误
否则, 对于带括号的表达式, 如果目标是将亡值, 那么返回右值引用
对于带括号的表达式, 如果目标是左值, 返回左值引用
否则返回目标本身类型
推导四规则中最麻烦的是规则...也就是decltype一个const对象时, 尽管对象本身的const类型能被获取, 但是从这个对象中取出成员的const会丢失
5 提高类型安全
强类型枚举
普通的枚举enum代表对应到整数值的一些名字...而且由于其本质是常量数值的原因, enum成员总是可以被隐式转换为整型, 这很容易导致比较两个不同的枚举名称时出现错误的结果
C++11之前会通过类结构将枚举封装, 并建立新的转换和比较函数覆盖原先的操作