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