При определении класса выполняется следующее:Конструктор перемещения по умолчанию, принимающий параметр const
T(const T&&) = default;
Я читал о конструкторах хода here и объясняет, как по умолчанию все еще может быть неявно объявлено:
Класса может иметь несколько конструкторов перемещения, например, оба
T::T(const T&&)
иT::T(T&&)
. Если присутствуют определенные пользовательские конструкторы перемещения, пользователь может по-прежнему принудительно генерировать неявно объявленный конструктор перемещения с ключевым словом по умолчанию.
В нижней части страницы он упоминает отчет дефект РГС 2171:
РГС 2171 C++ 14
X(const X&&) = default
был нетривиальным, тривиальное.
Возможно, запись wiki имеет ошибку, а CWG 2171 ссылается только на конструктор копирования, а не на конструктор перемещения?
Почему это неправда? –
Действительно, но бесполезно, я бы сказал - как бы вы перешли от него? – SergeyA
@LightnessRacesinOrbit I [не удалось найти компилятор] (https://godbolt.org/g/MCdyqw), который скомпилирует его. – wally