std::move_constructible
来自cppreference.com
在标头 <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
,等于rv
的T
类型的不同对象,
下列均为真:
- 在定义 T u = rv; 后,
u
等于u2
; T(rv)
等于u2
;且- 若
T
无 const 限定,则rv
的结果状态(在上述任一条中求值的定义/表达式后)合法但未指定;否则不更改它。
[编辑]引用
- C++23 标准(ISO/IEC 14882:2024):
- 18.4.13 Concept
move_constructible
[concept.moveconstructible]
- 18.4.13 Concept
- C++20 标准(ISO/IEC 14882:2020):
- 18.4.13 Concept
move_constructible
[concept.moveconstructible]
- 18.4.13 Concept
[编辑]参阅
(C++11)(C++11)(C++11) | 检查类型是否能从右值引用构造 (类模板) |