13 KiB
[gram.class]
Annex A (informative) Grammar summary [gram]
A.9 Classes [gram.class]
class-name:
identifier
simple-template-id
class-specifier:
class-head { member-specificationopt }
class-head:
class-key attribute-specifier-seqopt class-head-name class-property-specifier-seqopt base-clauseopt
class-key attribute-specifier-seqopt base-clauseopt
class-head-name:
nested-name-specifieropt class-name
class-property-specifier-seq:
class-property-specifier class-property-specifier-seqopt
class-property-specifier:
final
trivially_relocatable_if_eligible
replaceable_if_eligible
class-key:
class
struct
union
member-specification:
member-declaration member-specificationopt
access-specifier : member-specificationopt
member-declaration:
attribute-specifier-seqopt decl-specifier-seqopt member-declarator-listopt ;
function-definition
friend-type-declaration
using-declaration
using-enum-declaration
static_assert-declaration
consteval-block-declaration
template-declaration
explicit-specialization
deduction-guide
alias-declaration
opaque-enum-declaration
empty-declaration
member-declarator-list:
member-declarator
member-declarator-list , member-declarator
member-declarator:
declarator virt-specifier-seqopt function-contract-specifier-seqopt pure-specifieropt
declarator requires-clause function-contract-specifier-seqopt
declarator brace-or-equal-initializer
identifieropt attribute-specifier-seqopt : constant-expression brace-or-equal-initializeropt
virt-specifier-seq:
virt-specifier virt-specifier-seqopt
virt-specifier:
override
final
pure-specifier:
= 0
friend-type-declaration:
friend friend-type-specifier-list ;
friend-type-specifier-list:
friend-type-specifier ...opt
friend-type-specifier-list , friend-type-specifier ...opt
friend-type-specifier:
simple-type-specifier
elaborated-type-specifier
typename-specifier
conversion-function-id:
operator conversion-type-id
conversion-type-id:
type-specifier-seq conversion-declaratoropt
conversion-declarator:
ptr-operator conversion-declaratoropt
base-specifier-list:
base-specifier ...opt
base-specifier-list , base-specifier ...opt
base-specifier:
attribute-specifier-seqopt class-or-decltype
attribute-specifier-seqopt virtual access-specifieropt class-or-decltype
attribute-specifier-seqopt access-specifier virtualopt class-or-decltype
class-or-decltype:
nested-name-specifieropt type-name
nested-name-specifier template simple-template-id
computed-type-specifier
access-specifier:
private
protected
public
mem-initializer-list:
mem-initializer ...opt
mem-initializer-list , mem-initializer ...opt
mem-initializer:
mem-initializer-id ( expression-listopt )
mem-initializer-id braced-init-list