effective modern c++(条款1-4)型别推导
条款1–理解模板型别推导
- 具有引用型别的实参会被当成非引用型别来处理
- 对万能引用形参推导时,左值会进行特殊处理
- 按值传递,忽略const volatile
- 数组或者函数型别推导,实参会退化为指针,除非被用来初始化引用
条款2–理解auto型别推导
auto会假定使用大括号括起来的初始化表达式代表一个std::initializer_list,但是模板型别推导不会。
函数返回值和lambda中的形参中使用auto,意思是使用模板型别推导。
条款3–理解decltype
返回变量或者表达式的型别
对于型别为T的左值表达式,除非该表达式仅有一个名字,decltypez总是返回T&
decltype(auto)应用decltype规则
条款4–掌握查看型别推导结果的方法
- 诊断器诊断信息
声明未定义的类模板,然后用要检测的变量的decltype构造一个该类,编译报错。 - 运行时输出
利用标准库中的typeid().name()
利用boost.TypeIndex