봐 :속성 지정자 시퀀스가 상속합니까? 이 조각에서
struct [[nodiscard]] Result {
};
struct DiscardableResult: Result {
};
가 DiscardableResult
가 [[nodiscard]]
속성이 있습니까? 그렇다면 어떻게 든 그것을 제거 할 수 있습니까?
봐 :속성 지정자 시퀀스가 상속합니까? 이 조각에서
struct [[nodiscard]] Result {
};
struct DiscardableResult: Result {
};
가 DiscardableResult
가 [[nodiscard]]
속성이 있습니까? 그렇다면 어떻게 든 그것을 제거 할 수 있습니까?
[dcl.attr.nodiscard/2는 말한다 :
nodiscard
호출이 기능은 이전에 그 반환 타입 가능성이 이력서 자격을 갖춘 클래스 또는 열거nodiscard
, 또는 선언 호출하는 함수 호출 표현이다 유형은nodiscard
입니다.
함수의 반환 유형은 DiscardableResult
입니다./5 dcl.attr.grammar]에 정의 된이 유형은 nodiscard
표시되지 않은 각 속성 지정자-SEQ 일부 엔티티 또는 문에 속하다라고
통사 문맥 식별 곳을 (9 절, 10 절, 11 절)이 나타납니다. 어떤 엔티티 또는 문장에 속하는 attribute-specifier-seq가 해당 엔티티 또는 문장에 적용 할 수없는 속성 또는 정렬 지정자를 포함하면 프로그램이 잘못 구성됩니다. attribute-specifier-seq가 friend 선언 (14.3)에 속하면 그 선언은 정의가됩니다. attribute-specifier-seq는 명시 적 인스턴스화 (17.7.2)에 속하지 않습니다.
강조가 추가되었습니다.
의 "의미 문맥"에 특성이 없습니다. 따라서이 엔티티에는 "appertains"속성이 없습니다.
속성은 상속되지 않습니다.
표준에는 특성이 상속된다는 내용이 없으므로 일반적으로 특성이 상속되지 않는다고 가정해야합니다. 표준은 또한'nodiscard'가 상속 받았다고 말하지 않습니다. – Brian
gcc와'-std-C++ 1z'가있는 clang은 속성을 상속하지 않는 것 같습니다. – bolov