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

Концепции 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 с убранной операцией присваивания были не тривиальными Разрешены удалённые конструкторы/операции

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

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