When defining a class, the following is valid:
T(const T&&) = default;
I read about move constructors here , and it explains how the default can still be declared implicitly:
A class can have several move constructors, for example. both T::T(const T&&)and T::T(T&&). If there are certain custom move constructors, the user can still force the constructor with the default keyword to generate an implicitly declared move.
The bottom of the page mentions the CWG 2171 defect report:
CWG 2171 C ++ 14
X(const X&&) = defaultwas nontrivial, made trivial.
Perhaps the wiki entry has only an error and the CWG 2171 refers only to the copy constructor, and not to the move constructor?
source
share