EMCPP条款4:掌握查看型别推导结果的方法
IDE一般可以给出型别。
也可以使用编译器诊断信息。比如先声明一个类模板但不去定义它:
| 1 | template<typename T> | 
诱发 x 和 y 的错误信息
| 1 | TD<decltype(x)> xType; | 
这样可以显示诊断信息,比如:
| 1 | error: 'xType' uses undefined class'TD<int>' | 
还可以使用 typeid(param).name() 打印型别信息,但是显示方式不同的编译器有所不同。
对于复杂类型,比如自定义的类型,使用Boost的TypeIndex库
要点速记
- 利用IDE编辑器、编译器错误消息和 Boost.Typelndex库常常能够查看到推导而得的型别 。
- 有些工具产生的结果可能会无用,或者不准确。所以,理解C++型别推导规则是必要的 。