Означает ли это, что операции копирования неявно определяются как удаленные операции? если да, то когда?
Да.
Когда элементы не могут быть скопированы (например, они не могут быть скопированы).
Поэтому я не понимаю, «в отличие от операций копирования, операция перемещения никогда не подразумевается как неявно удаленная функция».
- Когда элементы не могут быть скопированы, конструктор копирования удален.
- Когда элементы не могут быть перемещены, конструктор перемещения не удален. Вместо этого его просто не существует, поэтому вместо него выполняется копия.
- Если конструктор копирования не был удален! Тогда вы просто не сможете ничего сделать.
Если конструктор перемещения был удален, возникнет немедленная ошибка компиляции, а не попытка использовать вместо этого конструктор копирования.
Другими словами, пожалуйста, объясните разницу между неявными операциями перемещения и соответствующими им операциями копирования.
Ключ здесь разница между не объявляя что-то , а объявляя это как удаленное .
Я не знаю, почему книга делает из этого такое большое дело. Разница интересна только в том случае, если интересно, что конструктор копирования иногда удаляется неявно. И не особенно интересно, что конструктор копирования удален, потому что если бы его не было, вы все равно просто не получили бы копию. Не было бы другого конструктора, к которому можно было бы прибегнуть. Ну, я полагаю, учитывая некоторые другие неявные последовательности преобразования, которые, я полагаю, могут быть, так что это немного интересно.