Annex A (informative) Grammar summary [gram]

A.12 Templates [gram.temp]

template-declaration:
	template < template-parameter-list > declaration
template-parameter-list:
	template-parameter
	template-parameter-list , template-parameter
template-parameter:
	type-parameter
	parameter-declaration
type-parameter:
	type-parameter-key ... identifier
	type-parameter-key identifier = type-id
	template < template-parameter-list > type-parameter-key ... identifier
	template < template-parameter-list > type-parameter-key identifier = id-expression
type-parameter-key:
	class
	typename
simple-template-id:
	template-name < template-argument-list >
template-id:
	simple-template-id
	operator-function-id < template-argument-list >
	literal-operator-id < template-argument-list >
template-name:
	identifier
template-argument-list:
	template-argument ...
	template-argument-list , template-argument ...
template-argument:
	constant-expression
	type-id
	id-expression
typename-specifier:
	typename nested-name-specifier identifier
	typename nested-name-specifier template simple-template-id
explicit-instantiation:
	extern template declaration
explicit-specialization:
	template < > declaration
deduction-guide:
	explicit template-name ( parameter-declaration-clause ) -> simple-template-id ;