C++ именованные требования: MoveAssignable (начиная с C++11)
Материал из cppreference.com
Определяет, что экземпляр этого типа может быть приравнен к rvalue аргументу.
Требования
Тип T удовлетворяет MoveAssignable если
Даны:
t, изменяемое lvalue expression типаTrv, rvalue выражение типаT
Эти выражения должны быть допустимыми и иметь следующие эффекты:
| Выражение | Возвращаемый тип | Возвращаемое значение | Постусловия |
|---|---|---|---|
t = rv
|
T&
|
t
|
Если t и rv не ссылаются на один и тот-же объект , то значение t равно значению rv до приравнивания.
Новое значение |
Примечания
Тип не обязан обеспечивать move assignment operator чтобы удовлетворять этому требованию к типу: copy assignment operator который принимает параметр по значению или как const Type&, который будет связан с rvalue аргументом.
Если MoveAssignable класс имеет оператор перемещения, он также может реализовать move semantics чтобы реализовать преимущества того факта, что значение rv после присваивания неопределено.
Смотрите также
(C++11)(C++11)(C++11) |
проверяет, есть ли у типа оператор присваивания перемещением (шаблон класса) |
(C++20) |
указывает, что типу может быть присвоен другой тип (концепт) |