我正在尝试使用模板模板参数。 我没有问题让他们使用类,但由于某种原因它不适用于函数。
enum class MyEnum { A, B, C, D};
template<class EnumType, template<EnumType> class Fun >
class MyTest
{
}
template<MyEnum myEnum>
void freeFunc(int argument)
{
LOG_ERROR(" void freeFunc(int argument) default case!!! ");
}
template<>
void freeFunc<MyEnum::A>(int argument); // implemented in cpp
template<>
void freeFunc<MyEnum::B>(int argument); // implemented in cpp
template<>
void freeFunc<MyEnum::C>(int argument); // implemented in cpp
template<>
void freeFunc<MyEnum::D>(int argument); // implemented in cpp
template<MyEnum s>
class Cde
{
public:
};
MyTest<MyEnum, Cde > test1; // does compile
MyTest<MyEnum, freeFunc > test2; // does not compile
我不明白为什么test2不能编译。它只是说: 错误:期望一个类模板,得到了#FreeFunc&#39;
我做错了什么?
[edit]我正在寻找的是一种获取通用方法的方法,以获得在枚举类中模板化的自由函数和类模板
答案 0 :(得分:1)
请注意,功能模板不能用作template template argument,
模板模板参数的模板参数必须是id-expression,用于命名类模板或模板别名。