You are reading it wrong. This will break many C ++ 03 classes in the following cases:
Question getQuestion(); Question q(getQuestion()); // use of deleted move constructor!
Instead, FDIS says that the move constructor will be declared iff {there is no user-declared {copy constructor, {copy, move}, destructor} operator, and the implicitly declared move constructor will not be defined as remote}.
Relatively Update 2 . I was informed that if you explicitly specify a move constructor, it will be defined as deleted by the condition
for a move constructor, a non-static data element, or a direct or virtual base class with a type that does not have a move constructor and cannot be trivially copied.
Next, the move constructor will be defined as remote because CopyOnly
not trivially copied.
struct Question { std::vector<int> data_; CopyOnly copyOnly_; Question(Question&&) = default; };
source share