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++型别推导规则是必要的 。