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

dav*_*igh 8 c++ visual-c++ visual-studio-2015

以下简单代码在最新的Visual Studio编译器(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!
};
Run Code Online (Sandbox Code Playgroud)

错误消息是

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

gcc接受它没有任何问题.

这在我看来是一个明显的错误(在标准不支持的意义上).还有其他意见吗?

apa*_*doe 4

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

  • 您能提供有关该错误的更多信息吗?实际上,这个错误是什么?这样,遇到类似但略有不同问题的此页面的访问者就会知道您的错误修复是否也为他们解决了问题。 (2认同)