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

时间:2016-07-14 15:46:05

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

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

class Foo {
public:
   [[deprecated]] Foo(std::string);
   Foo();
};

在VS2015u3下,我收到错误:

C2416: attribute 'deprecated' cannot be applied in this context

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

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

1 个答案:

答案 0 :(得分:5)

暂时说明:是的。

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

class Foo {
public:
    [[deprecated]] Foo(std::string) { }
    Foo() { }
};

请向MS Connect提交错误报告,然后在此处发送链接,以便我们对其进行投票。 : - ]