Подтвердить что ты не робот

Каковы тривиальные операции в std:: is_trivially_copy_constructible в С++

Здесь выдержка из документации std:: is_copy_constructible (1) и std:: is_trivially_copy_constructible (2) на cppreference.com:

1) Проверяет, является ли тип CopyConstructible, то есть имеет доступный явный или неявный конструктор копирования. Если это требование выполнено, значение константы члена равно true, иначе значение равно ложь.

2) То же, что и (1), но выражение конструктора копии не вызовите любую операцию, которая не является тривиальной.

Итак, что здесь считается тривиальной операцией?

4b9b3361

Ответ 1

Как я сказал один раз перед:

Итак, каковы все эти тривиальные и нетривиальные вещи?

Конструктор копирования/перемещения для класса X тривиален, если он не предоставляется пользователем и если

     

- класс X не имеет виртуальных функций (10.3) и виртуальных базовых классов (10.1) и

     

- конструктор, выбранный для копирования/перемещения каждого подобъекта прямого базового класса, тривиален и

     

- для каждого нестатического элемента данных X, относящегося к типу класса (или его массиву), конструктор   выбранный для копирования/перемещения этого элемента тривиально,

     

в противном случае конструктор copy/move не является тривиальным.

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