在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在这方面是否被打破?
答案 0 :(得分:5)
暂时说明:是的。
这是一个错误,其中允许deprecated
应用于定义,但不允许应用于构造函数的声明(其他成员函数似乎很好)。例如。以下编译干净,与Update 2不同,行为正确(产生C4996 diagnostic):
class Foo {
public:
[[deprecated]] Foo(std::string) { }
Foo() { }
};
请向MS Connect提交错误报告,然后在此处发送链接,以便我们对其进行投票。 : - ]