EMCPP条款4:掌握查看型别推导结果的方法

YiQi 管理员

IDE一般可以给出型别。

也可以使用编译器诊断信息。比如先声明一个类模板但不去定义它:

1
2
template<typename T>
class TD;

诱发 xy 的错误信息

1
2
TD<decltype(x)> xType;
TD<decltype(y)> yType;

这样可以显示诊断信息,比如:

1
2
error: 'xType' uses undefined class'TD<int>'
error: 'yType' uses undefined class'TD<const int *>'

还可以使用 typeid(param).name() 打印型别信息,但是显示方式不同的编译器有所不同。

对于复杂类型,比如自定义的类型,使用Boost的TypeIndex库

要点速记

  • 利用IDE编辑器、编译器错误消息和 Boost.Typelndex 库常常能够查看到推导而得的型别 。
  • 有些工具产生的结果可能会无用,或者不准确。所以,理解C++型别推导规则是必要的 。
此页目录
EMCPP条款4:掌握查看型别推导结果的方法