std::move_constructible
来自 cppreference.cn
< cpp | 概念 (concepts)
| 定义于头文件 <concepts> |
||
| template< class T > concept move_constructible = std::constructible_from<T, T> && std::convertible_to<T, T>; |
(C++20 起) | |
概念 move_constructible 被满足,如果 T 是引用类型,或者它是对象类型,并且该类型的对象可以在直接初始化和复制初始化上下文中从该类型的右值构造,并具有通常的语义。
[编辑] 语义要求
如果 T 是对象类型,则 move_constructible<T> 仅在给定以下条件时才成立:
-
rv,一个类型为T的右值,以及 -
u2,一个类型为T且等于rv的不同对象,
以下条件为真
- 在定义 T u = rv; 之后,
u等于u2; -
T(rv)等于u2;并且 - 如果
T不是 const 限定的,则rv的结果状态(在上述任何一个要点中的定义/表达式求值之后)是有效的但未指定;否则,它保持不变。
[编辑] 参考资料
- 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 概念
[编辑] 参阅
| (C++11)(C++11)(C++11) |
检查类型是否可以从右值引用构造 (类模板) |