В коде
class A
{
public:
A() = default;
A(const A& obj) = default;
};
, поскольку я определяю конструктор копирования A, A не будет синтезировать конструктор перемещения. Но я все еще могу написать следующий код:
A obj;
A obj1 = std::move(obj); // call the copy constructor of A
Но если я определю класс A вот так
class A
{
public:
A() = default;
A(const A& obj) = default;
A(A&& obj) = delete;
};
тот же код
A obj;
A obj1 = std::move(obj); // error: call to deleted constructor of A
, тогда как понять разницу между cannot synthesize a move constructor
и the move constructor is deleted
?