|
|
|
|
· there are no user-declared copy constructors; · there are no user-declared copy assignment operators; · there are no user-declared move assignment operators; · there is no user-declared destructor. |
delete
s the pointer.NULL
in the "old" object, after moving (copying) the pointer value to the "new" object, so that a "double free" error is avoided.· it is not user-provided (meaning, it is implicitly-defined or defaulted); · T has no virtual member functions; · T has no virtual base classes; · the move constructor selected for every direct base of T is trivial; · the move constructor selected for every non-static class type (or array of class type) member of T is trivial. |
A trivial move constructor is a constructor that performs the same action as the trivial copy constructor, that is, makes a copy of the object representation as if by std::memmove . |
For non-union class types (class and struct), the move constructor performs full member-wise move of the object's bases and non-static members, in their initialization order, using direct initialization with an xvalue argument. |