名前空間
変種
操作

C++ 名前付き要件: RangeAdaptorClosureObject (C++20 以降)

From cppreference.com
 
 
C++ 名前付き要件
 

Range adaptor closure object は、パイプ演算子で呼び出し可能な FunctionObject です。 C が range adaptor closure object であり、Rrange である場合、次の 2 つの式は 同値です。

C(R)
R | C

2 つの range adaptor closure object は、operator| によって連鎖して、別の range adaptor closure object を生成できます。 CD が range adaptor closure object である場合、C | D は、次のプロパティを持つ range adaptor closure object E を生成します。

  • E は、それぞれ std::forward<decltype((C))>(C) および std::forward<decltype((D))>(D) から direct-non-list-initialized された CD のコピーを格納します。このような初期化が無効な場合、C | D も無効になります。
  • cd が格納されたコピー (E と同じ constness および値カテゴリを持つ) であり、Rrange オブジェクトである場合、次の式は 同値です。
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

注: operator() は、range adaptor object closure 型の volatile 修飾版または const-volatile 修飾版ではサポートされていません。

次のオブジェクトのいずれかと同じ型を持つオブジェクト (cv-修飾子を無視) は、range adaptor closure object です。

  • 単項 range adaptor object。
(C++23から)
  • range adaptor object による末尾引数のバインドの結果。
  • operator| による 2 つの range adaptor closure object の連鎖の結果。

[編集] 関連項目

rangeアダプタクロージャオブジェクトを定義するためのヘルパー基底クラステンプレート
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)