Объект

Объект - это участок памяти, у которого есть

  1. Размер
  2. Выравнивание
  3. Тип размещения
  4. Время жизни
  5. Тип
  6. Значение (может быть не определено)
  7. Имя (необязательно)

Объектами не являются

  • Значения
  • Ссылки
  • Функции
  • Перечисление (enum)
  • Типы
  • Нестатические типы класса
  • Шаблоны
  • Специализация класса или функции
  • Namespace
  • Parameter pack
  • this

Гарантируется, что два объекта, время жизни которых пересекаются имеют разный адрес в памяти (если один их них не является подобъектом другого).

Размер любого полного (complete) объекта должен быть больше нуля.

struct empty {};

static_assert(sizeof(empty) > 0);
static_assert(sizeof(empty) == 1);