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

cpp/concept/TriviallyCopyable: различия между версиями

Материал из cppreference.com
Нет описания правки
Нет описания правки
Строка 18: Строка 18:
=== Сообщения о дефектах ===
=== Сообщения о дефектах ===
{{dr list begin}}
{{dr list begin}}
{{dr list item|wg=cwg|dr=1734|std=C++11|before=POD’ы C++03 без операции присваивания были не тривиальными|after=Разрешены удалённые конструкторы/операции}}
{{dr list item|wg=cwg|dr=1734|std=C++11|before=POD’ы C++03 присваивания были не тривиальными|after=Разрешены удалённые конструкторы/операции}}
{{dr list end}}
{{dr list end}}



Версия от 11:39, 31 мая 2017

 
 
 

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

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

Требования

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

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

Сообщения о дефектах

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

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

См. также

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