我有这种情况:
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可以不进行编译。