gpt4 book ai didi

c++ - 自由函数的模板参数

转载 作者:行者123 更新时间:2023-11-28 05:15:20 25 4
gpt4 key购买 nike

我正在试验模板模板参数。让它们与类一起工作没有问题,但由于某种原因它不适用于函数。

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”

我做错了什么?

[编辑] 我正在寻找的是一种获得通用方法的方法,以获取免费函数和在枚举类上模板化的类模板

最佳答案

注意函数模板不能用作template template argument ,

A template argument for a template template parameter must be an id-expression which names a class template or a template alias.

关于c++ - 自由函数的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com