Пространства имён
Варианты
Действия

Концепции C++: TriviallyCopyable

Материал из cppreference.com
< cpp‎ | concept

Тривиально-копируемый тип — это тип данных, который копируется простым копированием области памяти без разбора, что внутри.

В C++03 было понятие «простые тупые данные», в C++11 эту концепцию разделили на несколько, одна из который — тривиально-копируемый тип.

[править] Требования

  • Конструктор копирования T(const T&) тривиальный (неявно или через default) или удалён.
  • Конструктор перемещения T(T&&) тривиальный или удалён.
  • Операция «присвоить» T& operator = (const T&) тривиальная или удалена.
  • Операция «присвоить с перемещением» T& operator = (T&&) тривиальная или удалена.
  • При этом хоть одно из этих четырёх должно существовать.
  • Тривиальный деструктор.

Отсюда следует, что нет виртуальных функций, виртуального наследования.

Скалярные типы, массивы из TriviallyCopyable и const-версии этих типов (но не volatile!) также TriviallyCopyable.

[править] Сообщения о дефектах

Следующее изменение поведения применено с обратной силой к предыдущему стандарту C++, который был опубликован:

Номер Применён Поведение в стандарте Корректное поведение
CWG 1734 C++11 POD’ы C++03 с убранной операцией присваивания были не тривиальными Разрешены удалённые конструкторы/операции

[править] См. также

Проверяет является ли класс тривиальнокопируемым или нет
(шаблон класса) [править]