名前空間
変種
操作

std::indirectly_copyable_storable

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
共通アルゴリズム要件
indirectly_copyable_storable
(C++20)  
(C++20)
(C++20)
(C++20)
ユーティリティ
(C++20)
イテレータアダプタ
Rangeアクセス
(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, 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` 型からのコピーが中間オブジェクトを介して実行できることを指定します。

[編集] セマンティック要件

InOut は、デファレンス可能な In 型の値 i が与えられた場合にのみ std::indirectly_copyable_storable<In, Out> をモデル化します。

  • 定義 std::iter_value_t<In> obj(*i); の後、obj*i によって以前に示されていた値と等しくなり、
  • iter_reference_t<In> が rvalue 参照型の場合、obj の初期化後、*i は有効だが未指定の状態に置かれます。

[編集] 等価性保持

標準ライブラリのコンセプトのrequiresで宣言された式は、(特に明記されていない限り)等価性保持である必要があります。

[編集] 関連項目

indirectly_readable 型から indirectly_writable 型へ値をコピーできることを規定する
(コンセプト) [編集]
indirectly_readable 型から indirectly_writable 型へ値をムーブでき、そのムーブが中間オブジェクトを介して実行できることを規定する
(コンセプト) [編集]
English 日本語 中文(简体) 中文(繁體)