A relatively same question is asked before, but the code snippet is different, which I believe makes this question unique.
Does the compiler generate the move operations in the following scenario?
class User {
public:
virtual ~User() = default;
User( User&& );
User& operator=( User&& );
User( User const& );
User& operator=( User const& );
};
If no, what is the difference between the last scenario and following case? Will the move operations be generated?
class User {
public:
virtual ~User() = default;
User( User&& )= default;
User& operator=( User&& )= default;
User( User const& )= default;
User& operator=( User const& )= default;
};