Annex A (informative) Grammar summary [gram]

A.8 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-virt-specifieropt base-clauseopt
    class-key attribute-specifier-seqopt base-clauseopt
class-head-name:
    nested-name-specifieropt class-name
class-virt-specifier:
    final
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
    using-declaration
    static_assert-declaration
    template-declaration
    alias-declaration
    empty-declaration
member-declarator-list:
    member-declarator
    member-declarator-list , member-declarator
member-declarator:
    declarator virt-specifier-seqopt pure-specifieropt
    declarator brace-or-equal-initializeropt
    identifieropt attribute-specifier-seqopt : constant-expression
virt-specifier-seq:
    virt-specifier
    virt-specifier-seq virt-specifier
virt-specifier:
    override
    final
pure-specifier:
    = 0