我正在尝试找到变量的类型。在stackoverflow中,提到了decltype()
用于该目的。但是,当我尝试使用它时,就像标题中提到的那样,它抛出了错误。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 4;
cout << decltype(x);
return 0;
}
我期望int
,但显示为错误。 error: expected primary-expression before 'decltype'
答案 0 :(得分:1)
类型不是一流的对象。您无法将类型传递给函数,而cout << decltype(x)
正是将类型传递给函数(尽管由运算符美化了)。
要获取有关变量类型的信息,您可以
int
,请不要打印它。使用此(非标准)功能模板
template <class T> void printType(const T&)
{
std::cout << __PRETTY_FUNCTION__ << "\n";
}
printType(x);
使用Boost。
#include <boost/type_index.hpp>
std::cout << boost::typeindex::type_id_with_cvr<decltype(x)>().pretty_name() << "\n";