Ответ 1
Краткая версия: Типы на С++:
-
Типы объектов: скаляры, массивы, классы, союзы
-
Типы ссылок
-
Типы функций
-
(Типы участников) [см. ниже]
-
void
Длинная версия
-
Типы объектов
-
Скаляры
-
арифметика (интеграл, float)
-
указатели:
T *
для любого типаT
-
перечисление
-
указатель на член
-
nullptr_t
-
-
Массивы:
T[]
илиT[N]
для любого полного, не ссылочного типаT
-
Классы:
class Foo
илиstruct Bar
-
Тривиальные классы
-
Заполнители
-
Классы POD
-
(и т.д. и т.д.)
-
-
Союзы:
union Zip
-
-
Типы ссылок:
T &
,T &&
для любого объекта или типа свободной функцииT
-
Типы функций
-
Свободные функции:
R foo(Arg1, Arg2, ...)
-
Функции-члены:
R T::foo(Arg1, Arg2, ...)
-
-
void
Типы членов работают следующим образом. Тип члена имеет вид T::U
, но вы не можете иметь объекты или переменные типа члена. У вас могут быть только указатели участников. Указатель-член имеет тип T::* U
, и он является объектом-указателем-членом, если U
является (свободным) типом объекта и функцией-указателем-членом, если U
является (свободным) тип функции.
Все типы завершены, за исключением void
, нестандартных массивов и объявленных, но не определенных классов и объединений. Все неполные типы, кроме void
, могут быть завершены.
Все типы могут быть const
/volatile
квалифицированными.
Заголовок <type_traits>
предоставляет классы признаков для проверки каждой из этих характеристик типа.