Удаляет ли удаление конструктор копирования также операторы копирования / перемещения по умолчанию? - PullRequest
0 голосов
/ 27 мая 2018

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

class Foo {
public:
  Foo(const Foo&) = delete;

  // Are these 3 needed?
  Foo(Foo&) = delete;
  Foo& operator=(const Foo&) = delete;
  Foo& operator=(Foo&&) = delete;
}

Есть ли цель также удалить конструктор перемещения и/ или операторы присваивания перемещения / копирования, или удаление конструктора копирования автоматически указывает компилятору не генерировать их?

1 Ответ

0 голосов
/ 27 мая 2018

Проверьте списки на , когда такие функции неявно удалены, а когда нет.Итак, краткий ответ на ваш вопрос без повторения того, что написано в документальном фильме:

Есть ли цель также удалить конструктор перемещения и / или операторы присваивания перемещения / копирования [...]?

Да, конечно, есть.Даже если он просто подчеркивает избыточным образом, что определенная операция не разрешена, это может сделать интерфейс вашего кода более выразительным.

...