gpt4 book ai didi

c++ - 基于可变参数模板长度的条件成员函数声明

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:07 24 4
gpt4 key购买 nike

我想根据类的可变参数模板的长度在我的类中定义一组不同的成员函数。这可能吗?例如,这样的事情可能吗?

template<class T, std::size_t... T2>
class S {
public:
#ifdef SIZE_OF_T2_GREATER_THAN_ZERO
void f1(params1);
#else
void f2(params2);
#endif
};

因此,如果 T2... 的长度大于零,我希望定义函数 f1 而如果 T2... 我想要定义一些函数 f2。这可能吗?

最佳答案

如果根据应用于 T2...sizeof...() 使成员函数模板化

template<std::size_t L = sizeof...(T2)>

您可以使用 std::enable_if 有条件地编译函数,如:

template<class T, std::size_t... T2>
struct my_struct{
template<std::size_t L = sizeof...(T2)>
typename std::enable_if<L!=0, void>::type f1()
{
std::cout<< "this class has T2...\n";
}

template<std::size_t L = sizeof...(T2)>
typename std::enable_if<L==0, void>::type f2()
{
std::cout<< "this class has nooooo T2\n";
}
};

我在 http://cpp.sh/6jskq 做了一个工作示例

关于c++ - 基于可变参数模板长度的条件成员函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52909714/

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