我收到了一封link,用于描述C ++ 11中的[[deprecated]]
属性。这听起来非常方便,我想了解更多信息 - 编译器支持它,完整的文档等等。
我花了20分钟左右搜索,但除了链接的网站,我无法在的任何地方找到信息。部分地,由于与C ++ 11相关的“已弃用”一词的其他用法以及搜索引擎无法识别[[
,这很复杂。我也没有在各种SO答案中与草案标准中找到这一点。我无权使用完整的付费标准。
是否有人有关于此[[deprecated]]
属性的更多信息?
P.S。:如果你很好奇,我会用它作为https://stackoverflow.com/a/295229/599884
的更好选择答案 0 :(得分:13)
[[deprecated]]
属性已进入C ++ 14草案(参见the October 2013 draft的7.6.5节[dcl.attr.deprecated])。
attribute-token
deprecated
可用于标记仍然允许使用的名称和实体,但由于某种原因不鼓励。
例如,不推荐使用以下函数foo
:
[[deprecated]]
void foo(int);
可以提供描述不推荐使用名称或实体的原因的消息:
[[deprecated("Replaced by bar, which has an improved interface")]]
void foo(int);
消息必须是字符串文字。
答案 1 :(得分:7)
首先,[[]]
中的内容不是关键字;它们是属性。
其次,C ++ 11标准没有定义[[deprecated]]
属性。您所指的链接是错误的还是指的是实现此属性的特定编译器(可能是C ++ Builder?)。
属性(通常)是特定于编译器的。与#pragma
一样,编译器应该忽略它们不支持的任何属性。