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
	deduction-guide
	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