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在这方面打破了?
简而言之:是的.
这是一个错误,deprecated允许将其应用于构造函数的定义,但不应用于声明(其他成员函数似乎很好).例如,以下编译干净,与Update 2不同,行为正确(产生C4996诊断):
class Foo {
public:
[[deprecated]] Foo(std::string) { }
Foo() { }
};
Run Code Online (Sandbox Code Playgroud)
请向MS Connect提交错误报告,并在此处发布回复链接,以便我们对其进行投票.: - ]
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |