Annex A (informative) Grammar summary [gram]

A.8 Classes [gram.class]

class-name:
	identifier
	simple-template-id
class-specifier:
	class-head { member-specification }
class-head:
	class-key attribute-specifier-seq class-head-name class-virt-specifier base-clause
	class-key attribute-specifier-seq base-clause
class-head-name:
	nested-name-specifier class-name
class-virt-specifier:
	final
class-key:
	class
	struct
	union
member-specification:
	member-declaration member-specification
	access-specifier : member-specification
member-declaration:
	attribute-specifier-seq decl-specifier-seq member-declarator-list ;
	function-definition
	using-declaration
	using-enum-declaration
	static_assert-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-seq pure-specifier
	declarator requires-clause
	declarator brace-or-equal-initializer
	identifier attribute-specifier-seq : constant-expression brace-or-equal-initializer
virt-specifier-seq:
	virt-specifier
	virt-specifier-seq virt-specifier
virt-specifier:
	override
	final
pure-specifier:
	= 0
conversion-function-id:
	operator conversion-type-id
conversion-type-id:
	type-specifier-seq conversion-declarator
conversion-declarator:
	ptr-operator conversion-declarator
base-clause:
	: base-specifier-list
base-specifier-list:
	base-specifier ...
	base-specifier-list , base-specifier ...
base-specifier:
	attribute-specifier-seq class-or-decltype
	attribute-specifier-seq virtual access-specifier class-or-decltype
	attribute-specifier-seq access-specifier virtual class-or-decltype
class-or-decltype:
	nested-name-specifier type-name
	nested-name-specifier template simple-template-id
	decltype-specifier
access-specifier:
	private
	protected
	public
ctor-initializer:
	: mem-initializer-list
mem-initializer-list:
	mem-initializer ...
	mem-initializer-list , mem-initializer ...
mem-initializer:
	mem-initializer-id ( expression-list )
	mem-initializer-id braced-init-list
mem-initializer-id:
	class-or-decltype
	identifier