错误:“ decltype”之前预期的主表达式

时间:2019-05-06 09:40:04

标签: c++ windows mingw

我正在尝试找到变量的类型。在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'

1 个答案:

答案 0 :(得分:1)

类型不是一流的对象。您无法将类型传递给函数,而cout << decltype(x)正是将类型传递给函数(尽管由运算符美化了)。

要获取有关变量类型的信息,您可以

  1. 阅读代码。如果对象的类型为int,请不要打印它。
  2. 使用调试器逐步执行程序。它显示了变量的类型。
  3. 使用此(非标准)功能模板

    template <class T> void printType(const T&)
    {
        std::cout << __PRETTY_FUNCTION__ << "\n";
    }
    
    printType(x);
    
  4. 使用Boost。

    #include <boost/type_index.hpp>
    
    std::cout << boost::typeindex::type_id_with_cvr<decltype(x)>().pretty_name() << "\n";