C++98只有一种类型推导规则:函数模板。C++11修改了一点规则样本,并且添加额外的两条规则,一条是auto
,另一个是decltype
。C++14继续扩展了auto
和decltype
的使用情况。随着类型推导的广泛使用,会使得你从一些明显的或者是冗余的类型拼写中解放出来。它使得C++编写的软件更加具有适用性,因为改变代码中的一处地方的类型,编译器会在代码的其他地方自动的推导出类型定义。但是这使得代码扫描过程更加困难,因为类型推导对编译器来说并不是你想的那么简单。
不去理解类型推导是如何操作的,高效的使用现代C++进行编程是不可能的。在类型推导过程中有太多的上下文判断,在大多数情况,auto
出现在调用函数模板时,在decltype
表达式里面,和在C++14中,神秘的decltype(auto)
构造。
本章提供每个C++开发者必需的关于类型推导的信息。解释了模板类型推导是怎么工作的,auto
如何左右类型,decltype
是怎样运行的。甚至解释了如何强制编译器限定显示类型推导的结果,这样会帮助你明确编译器推导的类型是不是你所需要的。