gez*_*eza 19 c++ language-lawyer c++11 c++14 c++17
看看这个片段:
struct [[nodiscard]] Result {
};
struct DiscardableResult: Result {
};
Run Code Online (Sandbox Code Playgroud)
是否DiscardableResult
有[[nodiscard]]
属性?如果是,是否有可能以某种方式将其删除?
Nic*_*las 15
[dcl.attr.nodiscard]/2说:
一个
nodiscard
呼叫是一个函数调用表达式调用先前声明的函数nodiscard
,或者其返回类型是标志着一个可能被cv修饰类或枚举类型nodiscard
.
函数的返回类型是DiscardableResult
.此类型未标记nodiscard
,如[dcl.attr.grammar]/5中所定义:
每个属性说明符-seq被认为属于某个实体或语句,由它出现的句法上下文标识(第9条,第10条,第11条).如果属于某个实体或语句的attribute-specifier-seq包含不允许应用于该实体或语句的属性或alignment-specifier,则该程序格式错误.如果属性说明符-seq附属于朋友声明(14.3),则该声明应为定义.没有attribute-specifier-seq属于显式实例化(17.7.2).
强调补充说.
在"语法上下文"中没有属性DiscardableResult
.因此,该实体没有属性"附属".
属性不会被继承.
归档时间: |
|
查看次数: |
450 次 |
最近记录: |