gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:36:42 27 4
gpt4 key购买 nike

在 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 在这方面坏了?

最佳答案

简而言之:是的。

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

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

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

关于c++ - Visual Studio 2015 Update 3 是否破坏了构造函数属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38378693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com