获取C ++中包含引用的表达式类型

时间:2017-07-18 19:10:47

标签: c++ types reference expression c++14

如何获取包含引用的表达式类型?因此,以下伪代码将给出不同的结果3次。

int a = 5;
std::cout << type(a) << std::endl;
int &b = a;
std::cout << type(b) << std::endl;
int &&c = 5;
std::cout << type(c) << std::endl;

typeid由于某种原因忽略了引用,因此它不是一个选项。)

1 个答案:

答案 0 :(得分:3)

如果您只需要查看推断类型,一个技巧就是制作一个无法实例化的模板:

template<typename T> struct TD;
TD<decltype(a)> tda;
TD<decltype(b)> tdb;
TD<decltype(c)> tdc;

这会导致编译错误,告诉您a / b / c的类型。