如何重载可变参数模板函数?

用户名

这些是模板类的成员函数:

template<class Function_T, class Data_T,typename... Args>

我有两个模板函数:

void execute(Data_T&, Args&...);
void execute(Data_T&);

问题是,如果我不使用'Args ...'的可变参数类型声明我的对象,即使我正在调用第二个函数,也不会编译。为什么Args ...如果不使用它,则需要一个类型?模板生成器不应该意识到这一点吗?尽管从未真正接触过变量,但它要求开发人员传入一种类型(任何类型)。

示例代码:(忽略“作品”)

http://pastebin.com/E1xsc6iS

http://pastebin.com/FxjVzuCm

伊戈尔垃圾

在no的情况下,为您的班级添加部分专业化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&);
};

现场例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章