---
Regarding **Update 2**. It has been brought to my attention that if you explicitly-default the move constructor, it will be defined as deleted by the condition
> for the move constructor, a non-static data member or direct or virtual base class with a type that does not have a move constructor and is not trivially copyable.
In the following, the move constructor will be defined as **deleted**, because `CopyOnly` is not trivially copyable.
struct Question {
std::vector<int> data_;
CopyOnly copyOnly_;
Question(Question&&) = default;
};