std::move_constructible
来自 cppreference.cn
定义于头文件 <concepts> |
||
template< class T > concept move_constructible = std::constructible_from<T, T> && std::convertible_to<T, T>; |
(since C++20) | |
当 T
是引用类型,或者当 T
是对象类型且该类型的对象可以从该类型的右值在直接初始化和复制初始化语境中构造时,move_constructible
概念得到满足,并具有通常的语义。
[edit] 语义要求
如果 T
是对象类型,则仅当给定以下条件时,move_constructible<T>
才会被建模
-
rv
,类型为T
的右值,并且 -
u2
,与rv
相等的类型为T
的不同对象,
以下各项为真
- 在定义 T u = rv; 之后,
u
等于u2
; -
T(rv)
等于u2
;并且 - 如果
T
没有 const 限定,则rv
的结果状态(在上述任一要点中评估定义/表达式之后)是有效的但不确定的;否则,它是不变的。
[edit] 参考文献
- C++23 标准 (ISO/IEC 14882:2024)
- 18.4.13 概念
move_constructible
[concept.moveconstructible]
- 18.4.13 概念
- C++20 标准 (ISO/IEC 14882:2020)
- 18.4.13 概念
move_constructible
[concept.moveconstructible]
- 18.4.13 概念
[edit] 参见
(C++11)(C++11)(C++11) |
检查类型是否可以从右值引用构造 (类模板) |