最終更新日時: 2026年01月14日 13時53分47秒 (JST)
Raclamusi が更新

履歴 編集

<exposition-only>

# exposition-only

このページでは、説明専用のライブラリをまとめる。 これらはC++規格の文章中に現れる説明のためのものであり、実際に使うことはできない。

名前 | 説明 | 対応バージョン
--- | --- | ---
`decay-copy` | `decay`した型にコピーまたはムーブする (function template) | C++20
`synth-three-way` | 三方比較可能であればそれを行い、そうでなければ三方比較を実装して比較を行う (variable) | C++20
`synth-three-way-result` | `synth-three-way`関数オブジェクトでの比較結果の型 (function template) | C++20

## コンテナ

名前 | 説明 | 対応バージョン
--- | --- | ---
`container-compatible-range` | 指定されたコンテナと互換性のあるRange | C++23

## `<concepts>`

名前 | 説明 | 対応バージョン
--- | --- | ---
`boolean-testable` | 真理値型 (concept) | C++20

## `<iterator>`

名前 | 説明 | 対応バージョン
--- | --- | ---
`with-reference` | 型`T`に参照を付加する (alias template) | C++20
`can-reference` | `with-reference`可能 (concept) | C++20
`dereferenceable` | 単純な間接参照が可能 (concept) | C++20
`is-integer-like` | 符号付整数型と同等の型か否かを表す (variable template) | C++20
`is-signed-integer-like` | 符号なし整数型と同等の型か否かを表す (variable template) | C++20
`constant-iterator` | 要素不変なイテレータ (concept) | C++23

## `<ranges>`

名前 | 説明 | 対応バージョン
--- | --- | ---
`copyable-box` | コピー可能、または例外なしでムーブ可能な場合のみ値を保持する型 (class template) | C++20 C++23で削除
`movable-box` | 例外なしでムーブ可能な場合のみ値を保持する型 (class template) | C++23
`simple-view` | 単純なビューを表す (concept) | C++20
`has-arrow` | `std::input_iterator`を満たし、アロー演算子が使用できる型かを表す (concept) | C++20
`range-with-movable-references` | 要素の参照と右辺値参照がムーブ構築できる`input_range` (concept) | C++23
`different-from` | `const`/`volatile`修飾を無視して、2つの型が同じでないことを表す (concept) | C++20
`uses-nonqualification-pointer-conversion` | 直接変換できない型同士のポインタの変換が必要かどうかを表す (concept) | C++20
`convertible-to-non-slicing` | スライシングを起こさずに変換できるかどうかを表す (concept) | C++20
`pair-like-convertible-from` | ある2つの型から構築出来る`pair-like`な型を表す (concept) | C++20
`maybe-const` | bool値に応じて`const`修飾を付加する (alias template) | C++23
`tuple-transform` | `tuple`の各要素に関数を適用した`tuple`を生成する (function template) | C++23
`tuple-for-each` | `tuple`の各要素に関数を適用する (function template) | C++23
`as-lvalue` | rvalueをlvalueへキャストする (function template) | C++23
`all-random-access` | すべてのビューが`random_access_range`であるかを表す (concept) | C++26
`all-bidirectional` | すべてのビューが`bidirectional_range`であるかを表す (concept) | C++26
`all-forward` | すべてのビューが`forward_range`であるかを表す (concept) | C++26

## `<tuple>`

名前 | 説明 | 対応バージョン
--- | --- | ---
`tuple-like` | `tuple`のような型を表す (concept) | C++23
`pair-like` | `pair`のような型を表す (concept) | C++20

## 参照

- N4861 16.4.2.1 Exposition-only functions
- LWG 3404 Finish removing `subrange`'s conversions from `pair-like`
- P2278R4 `cbegin` should always return a constant iterator
- P2494R2 Relaxing range adaptors to allow for move only types