这些是模板类的成员函数:
template<class Function_T, class Data_T,typename... Args>
我有两种功能:
void execute(Data_T&, Args&...);
void execute(Data_T&);
问题在于,如果我没有为'Args ...'声明我的对象具有可变参数类型'即使我正在调用第二个函数,它也不会编译。为什么Args ......如果不使用它需要一个类型?模板生成器不应该意识到这一点吗?它要求开发人员传入一个类型(任何类型),尽管变量从未实际被触及。
示例代码:(忽略'作品')
答案 0 :(得分:1)
为您的班级添加部分专精,如果不是Args
:
template<class Data_T,typename... Args>
class tclass
{
public:
// Two overloads
void example(Data_T&, Args&...);
void example(Data_T&);
};
template <class Data_T>
class tclass<Data_T>
{
public:
// One overload
void example(Data_T&);
};