C++ 概念: MoveInsertable (C++11 起)
来自cppreference.com
指定类型对象能以给定的分配器,从该类型右值构造到未初始化内存。
[编辑] 要求
类型 T
可移动构造 (MoveInsertable
) 进入其 value_type
等同于 T
的容器 X
,若给定
A
|
分配器类型 |
m
|
A 类型左值
|
p
|
容器所准备的 T* 类型指针
|
rv
|
T 类型右值表达式
|
其中 X::allocator_type
等同于 std::allocator_traits<A>::rebind_alloc<T> ,
下列表达式为良式:
std::allocator_traits<A>::construct(m, p, rv);
而且求值后, *p
的值等价于 rv
先前保有的值( rv
保持合法,但在未指定状态)。
若 X
不具分配器,则项目定义为假设 A
是 std::allocator<T> ,除了不需要创建分配器对象,且不实例化 std::allocator 的用户定义特化。
[编辑] 注意
若 A
为 std::allocator<T> ,则这将调用布置 new ,如同用 ::new((void*)p) T(rv) 。
若使用 std::allocator<T> 或类似的分配器,则类不必实现移动构造函数以满足此类型要求:接收 const T&
参数的复制构造函数能绑定右值表达式。若可移动插入 (MoveInsertable) 类实现移动构造函数,则它可能亦实现移动语义以利用 rv
的值在构造后未指定的事实。
[编辑] 参阅
可复制插入 (CopyInsertable )
|