C++ 概念: MoveAssignable (since C++11)

来自cppreference.com
< cpp‎ | concept
 
 
C++ 的概念

|- class="t-nv-h1" | colspan="5" | 基础 |- | |- |

DefaultConstructible
CopyAssignable
CopyConstructible

|

MoveAssignable(C++11)
MoveConstructible(C++11)
Destructible

|-

|- class="t-nv-h1" | colspan="5" | 库 |- | |- |

|

NullablePointer(C++11)
Hash(C++11)
Allocator

|-

|- class="t-nv-h1" | colspan="5" | 容器 |- | |- |

|

|-

容器元素

| |- |

CopyInsertable(C++11)
MoveInsertable(C++11)

|

|-

|- class="t-nv-h1" | colspan="5" | 迭代器 |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 随机数 |- | |- |

SeedSequence(C++11)
RandomNumberEngine(C++11)

|

|-

|- class="t-nv-h1" | colspan="5" | 并发 |- | |- |

BasicLockable(C++11)
Lockable(C++11)
TimedLockable(C++11)

|

Mutex(C++11)
TimedMutex(C++11)

|-

|- class="t-nv-h1" | colspan="5" | 其它 |- | |- |

|

UnaryTypeTrait(C++11)
BinaryTypeTrait(C++11)
TransformationTrait(C++11)
TrivialClock(C++11)

|-

 

说明该类型的实例可以被移动复制(移动)。这意味着该类型拥有移动语义:可以以尽可能小的开销将其内部状态传递给相同类型的另一个实例。

[编辑] 要求

该类型必须满足 CopyAssignable 的要求,或者/并且实现下列函数:

Type::operator=

Type& Type::operator=( Type&& other );

Type& Type::operator=( const Type&& other );
Type& Type::operator=( volatile Type&& other );

Type& Type::operator=( const volatile Type&& other );
(至少实现其中之一)

移动赋值操作符:使赋值为 other 的内容。移动操作后 other 的内部状态未指定,然而应该仍是有效的,该类型的不变量应该还是有效的(no invariants of the type are broken)。该函数必须返回 *this

下列表达式必须达到所述效果:

表达式 效果
a = rv; arv 等价,aType 类型的实例、rvType 类型的右值引用

[编辑] 另请参阅

检查对象是否重载了移动赋值运算符
(类模板) [edit]