我有这种情况:

template<typename myEnumType>
int foo(const myEnumType & shortest_paths_algorithm)
{
    ...
}

int main()
{
    myEnumType enum_type_istance;
    int a = foo(enum_type_istance)
}

如果我声明
typedef enum {AAA, BBB} myEnumType;

在函数声明之前,一切正常。同时,如果我在创建enum_type_istance变量之前写了以上代码,则会收到错误消息



为什么???我如何在主体内部定义类型?
谢谢!

最佳答案

您使用的是C++ 11之前的C++,它不允许在模板参数中使用“本地”类型。幸运的是,此功能已在C++ 11中引入。作为you can see,它可以使用-std=c++11标志进行编译,而it fails可以不进行编译。

10-07 16:18