Объект
Объект - это участок памяти, у которого есть
- Размер
- Выравнивание
- Тип размещения
- Время жизни
- Тип
- Значение (может быть не определено)
- Имя (необязательно)
Объектами не являются
- Значения
- Ссылки
- Функции
- Перечисление (
enum
) - Типы
- Нестатические типы класса
- Шаблоны
- Специализация класса или функции
- Namespace
- Parameter pack
this
Гарантируется, что два объекта, время жизни которых пересекаются имеют разный адрес в памяти (если один их них не является подобъектом другого).
Размер любого полного (complete
) объекта должен быть больше нуля.
struct empty {};
static_assert(sizeof(empty) > 0);
static_assert(sizeof(empty) == 1);