C ++多个版本的默认特殊成员函数 - 在MSVC 2015中出错

时间:2016-04-15 21:38:21

标签: c++ visual-c++ visual-studio-2015

以下简单代码在newest Visual Studio compiler(MSVC 2015 Update 2)中产生错误:

struct Foo
{
    template<typename ... Args, typename = std::enable_if_t<sizeof...(Args) != 0> > 
    Foo(Args ...) {}
    Foo() = default;  // error

    //Foo() {}        //this works!
};

错误消息是

  

错误C2580:'Foo :: Foo(void)':不允许使用默认特殊成员函数的多个版本

gcc毫无问题地接受了它。

在我看来,这是一个明显的错误(在某种意义上它不受标准支持)。还有其他观点吗?

1 个答案:

答案 0 :(得分:4)

这是VS 2015 Update 2中的一个错误。我们已经修复了错误(202164,尽管这是一个内部错误号。)此代码应该可以在Update 3版本中使用。