std::indirectly_copyable_storable

来自cppreference.com
< cpp‎ | iterator
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
indirectly_copyable_storable
(C++20)  
(C++20)
(C++20)
(C++20)
工具
(C++20)
迭代器适配器
范围访问
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
在标头 <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, conststd::iter_value_t<In>&>&&
    std::indirectly_writable<Out, std::iter_value_t<In>&&>&&
    std::indirectly_writable<Out, conststd::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_readableindirectly_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> 是右值引用类型,则 *iobj 的初始化后被置于合法但未指定的状态。

[编辑]相等性保持

标准库概念的 requires 表达式中声明的表达式都要求保持相等性(除非另外说明)。

[编辑]参阅

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