在可变参数模板类问题中具有默认参数的成员函数

时间:2017-12-09 12:45:23

标签: c++ visual-studio c++11 templates variadic-templates

我有一个可变的类模板,如下所示:

template<typename ... Args>
class myClass
{
public:
    void func(Args ... args, int a = 1)
    {}
};

当我传递空模板参数时,

myClass<> test;
test.func();

我的MS编译器(vs2017)发出错误。

  

错误C2660:&#39; myClass&lt;&gt; :: func&#39;:函数不带0个参数

我还检查了相应的功能模板版本,如下所示。

template<typename ... Args>
void func(Args ... args, int a = 1)
{}
func<>();

但编译器这次没有编译错误。

所以我想知道我是否违反了c ++ 11标准,或者这是MS编译器中的一个错误,因为我之前用GCC编译了这段代码,编译器没有错误。

0 个答案:

没有答案