std::indirectly_movable_storable
来自 cppreference.cn
< cpp | 迭代器 (iterator)
定义于头文件 <iterator> |
||
template< class In, class Out > concept indirectly_movable_storable = |
(C++20 起) | |
indirectly_movable_storable
概念指定了 indirectly_readable
类型和 indirectly_writable
类型之间的关系。除了 indirectly_movable
,此概念还指定了从 indirectly_readable
类型进行的移动可以通过中间对象执行。
[编辑] 语义要求
In
和 Out
仅在给定类型为 In
的可解引用值 i
的情况下,才符合 std::indirectly_movable_storable<In, Out> 模型
- 在定义 std::iter_value_t<In> obj(ranges::iter_move(i)); 之后,
obj
等于先前由 *i 表示的值,并且 - 如果 std::iter_rvalue_reference_t<In> 是右值引用类型,则在
obj
初始化后,*i 处于有效但未指定的状态。
[编辑] 等价性保留
标准库概念的 requires 表达式中声明的表达式必须是等价性保留的(除非另有说明)。
[编辑] 另请参阅
(C++20) |
指定值可以从 indirectly_readable 类型移动到 indirectly_writable 类型(概念) |
指定值可以从 indirectly_readable 类型复制到 indirectly_writable 类型,并且复制可以通过中间对象执行(概念) |