std::indirectly_movable_storable
来自cppreference.com
<tbody>
</tbody>
| 在标头 <iterator> 定义
|
||
template< class In, class Out > concept indirectly_movable_storable = std::indirectly_movable<In, Out> && std::indirectly_writable<Out, std::iter_value_t<In>> && std::movable<std::iter_value_t<In>> && std::constructible_from<std::iter_value_t<In>, std::iter_rvalue_reference_t<In>> && std::assignable_from<std::iter_value_t<In>&, std::iter_rvalue_reference_t<In>>; |
(C++20 起) | |
indirectly_movable_storable 概念指定 indirectly_readable 与 indirectly_writable 类型间的关系。在 indirectly_movable 之外,此概念还指定可以通过中间对象进行从 indirectly_readable 类型的移动。
语义要求
给定 In 类型的可解引用值 i,仅当满足以下条件,In 与 Out 实现 std::indirectly_movable_storable<In, Out>:
- 在定义
std::iter_value_t<In> obj(ranges::iter_move(i));后,obj等于*i先前代表的值,而 - 若
std::iter_rvalue_reference_t<In>是右值引用类型,则*i在obj的初始化后被置于合法但未指定的状态。
相等性保持
标准库概念的 requires 表达式中声明的表达式都要求保持相等性(除非另外说明)。
参阅
(C++20) |
指定可从 indirectly_readable 类型移动值给 indirectly_writable 类型 (概念) |
(C++20) |
指定可从 indirectly_readable 类型复制值给 indirectly_writable 类型,且该复制可以通过中间对象进行 (概念) |