我有一个像这样的枚举:
enum E
{
TYPE_FLOAT,
TYPE_CHAR,
TYPE_INT
}
我想创建一个编译时映射来为以下类型获取适当的 E:
GetE<float> // returns TYPE_FLOAT
GetE<char> // returns TYPE_CHAR
GetE<int> // returns TYPE_INT
我想到了:
template<class T> struct GetE;
template<> struct GetE<float> { static constexpr E type = TYPE_FLOAT; };
template<> struct GetE<char> { static constexpr E type = TYPE_CHAR; };
template<> struct GetE<int> { static constexpr E type = TYPE_INT; };
但我收到如下错误:
undefined reference to `GetE<int>::type'
最好的方法是什么?为什么会出错?