std::move_constructible

< 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> 仅若符合下列条件才得到实现。给定

  • rvT 类型右值,和
  • u2 ,等于 rvT 类型不同对象,

下列为真:

  • 在定义 T u = rv; 后, u 等于 u2
  • T(rv) 等于 u2 ;且
  • T 无 const 限定,则 rv 的结果状态(在上述任一条中求值的定义/表达式后)合法但未指定;否则不更改它。

参阅

检查类型是否能从右值引用构造
(类模板)