Visual Studio 2015 Update 3是否破坏了构造函数属性?

Col*_*Rob 7 c++ attributes visual-c++ c++14 visual-studio-2015

在VS2015u2中,下面的代码编译得很好.

class Foo {
public:
   [[deprecated]] Foo(std::string);
   Foo();
};
Run Code Online (Sandbox Code Playgroud)

在VS2015u3下,我收到一个错误:

C2416: attribute 'deprecated' cannot be applied in this context
Run Code Online (Sandbox Code Playgroud)

这适用于GCC 5.2,它适用于早期版本的VS2015.当然,弃用的属性实际上并没有在VS2015中触发警告,但这并不是一个重要的问题.

我是否误解了如何将属性应用于构造函数?还是VS2015u3在这方面打破了?

ild*_*arn 5

简而言之:是的.

这是一个错误,deprecated允许将其应用于构造函数的定义,但不应用于声明(其他成员函数似乎很好).例如,以下编译干净,与Update 2不同,行为正确(产生C4996诊断):

class Foo {
public:
    [[deprecated]] Foo(std::string) { }
    Foo() { }
};
Run Code Online (Sandbox Code Playgroud)

请向MS Connect提交错误报告,并在此处发布回复链接,以便我们对其进行投票.: - ]