11 Declarators [dcl.decl]

11.1 Type names [dcl.name]

Чтобы задать преобразования типов в явном виде, и в качестве аргумента sizeof, alignof, newили typeid, должно быть указано имя типа. Это можно сделать с помощью a type-id, который синтаксически является объявлением переменной или функции этого типа, в которой отсутствует имя объекта.

type-id:
	type-specifier-seq abstract-declaratoropt
defining-type-id:
	defining-type-specifier-seq abstract-declaratoropt
abstract-declarator:
	ptr-abstract-declarator
	noptr-abstract-declaratoropt parameters-and-qualifiers trailing-return-type
	abstract-pack-declarator
ptr-abstract-declarator:
	noptr-abstract-declarator
	ptr-operator ptr-abstract-declaratoropt
noptr-abstract-declarator:
	noptr-abstract-declaratoropt parameters-and-qualifiers
	noptr-abstract-declaratoropt [ constant-expressionopt ] attribute-specifier-seqopt
	( ptr-abstract-declarator )
abstract-pack-declarator:
	noptr-abstract-pack-declarator
	ptr-operator abstract-pack-declarator
noptr-abstract-pack-declarator:
	noptr-abstract-pack-declarator parameters-and-qualifiers
	noptr-abstract-pack-declarator [ constant-expressionopt ] attribute-specifier-seqopt
	...

Можно однозначно идентифицировать местоположение в том месте, abstract-declarator где появится идентификатор, если бы конструкция была декларатором в объявлении. В этом случае именованный тип совпадает с типом гипотетического идентификатора. [Example:

int                 // int i
int *               // int *pi
int *[3]            // int *p[3]
int (*)[3]          // int (*p3i)[3]
int *()             // int *f()
int (*)(double)     // int (*pf)(double)

назовите соответственно типы «int», «указатель на int», «массив из 3 указателей на int», «указатель на массив из 3 int», «функция (без параметров), возвращающая указатель на int» и «указатель на функцию (double), возвращающую int». ]end example

Тип также может быть назван (часто более легко) с помощью typedef ([dcl.typedef]).