我有一个可变的类模板,如下所示:
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编译了这段代码,编译器没有错误。