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 | {{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 с убранной операцией присваивания были не тривиальными | Разрешены удалённые конструкторы/операции |
См. также
(C++11) |
проверяет, можно ли тривиально скопировать тип (шаблон класса) |