命名空间
变体
操作

std::indirectly_copyable_storable

来自 cppreference.cn
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
indirectly_copyable_storable(间接可复制存储)
(C++20)  
工具
迭代器适配器
 
定义于头文件 <iterator>
template< class In, class Out >

concept indirectly_copyable_storable =
    std::indirectly_copyable<In, Out> &&
    std::indirectly_writable<Out, std::iter_value_t<In>&> &&
    std::indirectly_writable<Out, const std::iter_value_t<In>&> &&
    std::indirectly_writable<Out, std::iter_value_t<In>&&> &&
    std::indirectly_writable<Out, const std::iter_value_t<In>&&> &&
    std::copyable<std::iter_value_t<In>> &&
    std::constructible_from<std::iter_value_t<In>, std::iter_reference_t<In>> &&

    std::assignable_from<std::iter_value_t<In>&, std::iter_reference_t<In>>;
(C++20 起)

indirectly_copyable_storable 概念指定了 indirectly_readable 类型与 indirectly_writable 类型之间的关系。除了 indirectly_copyable,此概念还指定可以通过中间对象执行从 indirectly_readable 类型的复制。

[编辑] 语义要求

当且仅当给定类型为 In 的可解引用值 i 时,InOut 才建模 std::indirectly_copyable_storable<In, Out>

  • 在定义 std::iter_value_t<In> obj(*i); 后,obj 等于先前由 *i 表示的值,并且
  • 如果 std::iter_reference_t<In> 是右值引用类型,则在 obj 初始化后,*i 处于有效但未指定的状态。

[编辑] 相等性保持

标准库概念的 requires 表达式中声明的表达式必须是 相等性保持的(除非另有说明)。

[编辑] 参见

指定值可以从 indirectly_readable 类型复制到 indirectly_writable 类型
(概念) [编辑]
指定值可以从 indirectly_readable 类型移动到 indirectly_writable 类型,并且移动可以通过中间对象执行
(概念) [编辑]