如何获取包含引用的表达式类型?因此,以下伪代码将给出不同的结果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
由于某种原因忽略了引用,因此它不是一个选项。)
答案 0 :(得分:3)
如果您只需要查看推断类型,一个技巧就是制作一个无法实例化的模板:
template<typename T> struct TD;
TD<decltype(a)> tda;
TD<decltype(b)> tdb;
TD<decltype(c)> tdc;
这会导致编译错误,告诉您a
/ b
/ c
的类型。