名前空間
変種
操作

std::indirectly_readable

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
indirectly_readable
(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 >

    concept __IndirectlyReadableImpl =
        requires(const In in) {
            typename std::iter_value_t<In>;
            typename std::iter_reference_t<In>;
            typename std::iter_rvalue_reference_t<In>;
            { *in } -> std::same_as<std::iter_reference_t<In>>;
            { ranges::iter_move(in) } -> std::same_as<std::iter_rvalue_reference_t<In>>;
        } &&
        std::common_reference_with<
            std::iter_reference_t<In>&&, std::iter_value_t<In>&
        > &&
        std::common_reference_with<
            std::iter_reference_t<In>&&, std::iter_rvalue_reference_t<In>&&
        > &&
        std::common_reference_with<
            std::iter_rvalue_reference_t<In>&&, const std::iter_value_t<In>&

        >;
(説明用*)
template< class In >

    concept indirectly_readable =

        __IndirectlyReadableImpl<std::remove_cvref_t<In>>;
(C++20以降)

コンセプトindirectly_readableは、ポインタ、スマートポインタ、入力イテレータなど、operator*の適用によって読み取り可能な型によってモデル化されます。

[編集] 意味的要件

Iの値iが与えられた場合、Iindirectly_readableをモデル化するのは、それが包含するすべてのコンセプトがモデル化されており、式 *i等価性を保持する場合のみです。

[編集] 等価性保持

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

English 日本語 中文(简体) 中文(繁體)