C ++ 17 стандартна тяга N4659
Для швидкого перехресного стандартного посилання ознайомтеся з розділами "Неявно оголошені" наступних записів cppreference:
Звичайно, таку ж інформацію можна отримати із стандарту. Напр. На стандартній чернетці C ++ 17 N4659 :
15.8.1 "Конструктори копіювання / переміщення" кажуть для конструктора копій:
6 Якщо визначення класу явно не декларує конструктор копій, неявне оголошення оголошується неявно. Якщо визначення класу оголошує конструктор переміщення або оператор присвоєння переміщення, неявно оголошений конструктор копії визначається як видалений; в іншому випадку він визначається як дефолт (11.4). Останній випадок застарілий, якщо в класі є оголошений користувачем оператор присвоєння копії або оголошений користувачем деструктор.
і для конструктора переміщення:
8 Якщо визначення класу X не чітко оголошує конструктор переміщення, неявне буде неявно оголошено як дефолт, якщо і лише тоді
(8.1) - X не має оголошеного користувачем конструктора копій,
(8.2) - X не має оголошеного користувачем оператора призначення копії,
(8.3) - X не має оголошеного користувачем оператора призначення ходу, і
(8.4) - X не містить деструктора, оголошеного користувачем.
15.8.2 "Оператор призначення копіювання / переміщення" каже про призначення копії:
2 Якщо визначення класу явно не оголошує оператора призначення копії, воно оголошується неявно. Якщо визначення класу оголошує конструктор переміщення або оператор присвоєння переміщення, оператор присвоєння неявно визначеної копії визначається як видалений; в іншому випадку він визначається як дефолт (11.4). Останній випадок застарілий, якщо в класі є оголошений користувачем конструктор копій або оголошений користувачем деструктор.
і для призначення переміщення:
4 Якщо визначення класу X явно не оголошує оператора присвоєння переміщення, воно буде неявно оголошено як дефолт, якщо і лише тоді
- (4.1) - X не має оголошеного користувачем конструктора копій,
- (4.2) - X не має оголошеного користувачем конструктора переміщення,
- (4.3) - X не має оголошеного користувачем оператора призначення копії, і
- (4.4) - X не має деструктора, оголошеного користувачем.
15.4 "Деструктори" говорять про це для деструкторів:
4 Якщо в класі немає оголошеного користувачем деструктора, деструктор неявно оголошується як дефолт (11.4). Явно декларований деструктор - це вбудований громадський член свого класу.