名前付き要件
From cppreference.com
< cpp
このページに記載されている名前付き要件は、C++標準ライブラリに期待される動作を定義するために、C++標準の規定テキストで使用されている名前付き要件です。
これらの要件を満たすテンプレート引数でライブラリテンプレートをインスタンス化することを保証する責任は、プログラマにあります。これに失敗すると、非常に複雑なコンパイラ診断が出力される可能性があります。
これらの要件の一部は、C++20ではコンセプト言語機能を使用して正式化されています。
基本 | ||
| その型のオブジェクトがデフォルト構築可能であることを規定する (名前付き要件) | ||
| (C++11) |
その型のオブジェクトが右辺値から構築可能であることを規定する (名前付き要件) | |
| その型のオブジェクトが左辺値から構築可能であることを規定する (名前付き要件) | ||
| (C++11) |
その型のオブジェクトに右辺値から代入可能であることを規定する (名前付き要件) | |
| その型のオブジェクトに左辺値から代入可能であることを規定する (名前付き要件) | ||
| その型のオブジェクトが破棄可能であることを規定する (名前付き要件) | ||
型のプロパティ | ||
| 注: 標準では、このサブカテゴリで指定された名前の名前付き要件は定義されていません。 これらは、コア言語によって定義される型のカテゴリです。ここでは、一貫性のためだけに名前付き要件として含まれています。 | ||
| 配列型でもクラス型でもないオブジェクト型 (名前付き要件) | ||
| (C++20で非推奨) |
Cのstructと互換性のある、POD (Plain Old Data) 型 (名前付き要件) | |
| (C++11) |
これらの型のオブジェクトは、その基礎となるバイト列をコピーした後でも値を維持できる (名前付き要件) | |
| (C++11)(C++26で非推奨) |
これらの型のオブジェクトは、自明に構築およびコピーできる (名前付き要件) | |
| (C++11) |
これらの型は、他のプログラミング言語で書かれたコードとの通信に便利である (名前付き要件) | |
| これらの型のオブジェクトは暗黙的に生成でき、その生存期間を暗黙的に開始できる (名前付き要件) | ||
ライブラリワイド | ||
| 論理演算 (operator&&, operator||, operator!) が通常のセマンティクスを持つ (名前付き要件) | ||
operator==が同値関係である(名前付き要件) | ||
operator<が狭義の弱順序関係である(名前付き要件) | ||
| 非修飾の非メンバ関数呼び出しswap()で交換可能 (名前付き要件) | ||
| (C++11) |
Swappable 型にデリファレンスするLegacyIterator (名前付き要件) | |
| (C++11) |
ヌル値をサポートするポインタのような型 (名前付き要件) | |
| (C++11) |
異なる値の入力に対して、同じ出力を与える確率が低いFunctionObject (名前付き要件) | |
| アロケーション情報を含むクラス型 (名前付き要件) | ||
| 関数呼び出し構文で呼び出すことができるオブジェクト (名前付き要件) | ||
| invoke操作が定義されている型 (名前付き要件) | ||
| 1つの引数に対して、それを変更せずにboolに変換可能な値を返すFunctionObject (名前付き要件) | ||
| 2つの引数に対して、それらを変更せずにboolに変換可能な値を返すFunctionObject (名前付き要件) | ||
| 順序関係を確立するBinaryPredicate (名前付き要件) | ||
コンテナ | |
| イテレータを使用して要素アクセスを可能にするデータ構造 (名前付き要件) | |
| 双方向イテレータを使用するコンテナ (名前付き要件) | |
| (C++11) |
アロケータを使用するコンテナ (名前付き要件) |
| 要素が線形に格納されるコンテナ (名前付き要件) | |
| (C++17) |
要素が隣接したメモリ アドレスに格納されるコンテナ (名前付き要件) |
| 要素をキーに関連付けて格納するコンテナ (名前付き要件) | |
| 要素をキーに関連付けてバケットに格納するコンテナ (名前付き要件) | |
コンテナ要素 | |
| (C++11) |
未初期化ストレージ内で要素がデフォルト構築可能 (名前付き要件) |
| (C++11) |
未初期化ストレージ内で要素がコピー構築可能 (名前付き要件) |
| (C++11) |
未初期化ストレージ内で要素がムーブ構築可能 (名前付き要件) |
| (C++11) |
未初期化ストレージ内で要素が構築可能 (名前付き要件) |
| (C++11) |
アロケータを使用して要素が破棄可能 (名前付き要件) |
イテレータ | |
| 何らかのデータ構造内のデータにアクセスするための一般的な概念 (名前付き要件) | |
| データの読み取りに使用できるイテレータ (名前付き要件) | |
| データの書き込みに使用できるイテレータ (名前付き要件) | |
| データの複数回読み取りに使用できるイテレータ (名前付き要件) | |
| インクリメントとデクリメントの両方が可能なイテレータ (名前付き要件) | |
| 定数時間で進めることができるイテレータ (名前付き要件) | |
| (C++17) |
連続して割り当てられた要素へのイテレータ (名前付き要件) |
| (C++20) |
定数式評価中に使用できるイテレータ (名前付き要件) |
ストリームI/O関数 | |
| 先頭の空白をスキップせず、処理された文字数をカウントするストリーム入力関数 (名前付き要件) | |
| 先頭の空白をスキップするストリーム入力関数 (名前付き要件) | |
| 基本的なストリーム出力関数 (名前付き要件) | |
| エラー時にfailbitを設定し、ストリームへの参照を返すストリーム出力関数 (名前付き要件) | |
フォーマッタ | |
| (C++20) |
与えられたフォーマット引数型と文字型に対するフォーマット操作を抽象化する (名前付き要件) |
| (C++20) |
フォーマットライブラリで使用される関数を定義する (名前付き要件) |
乱数生成 | |
| (C++11) |
整数のシーケンスを消費し、32ビットの符号なし値のシーケンスを生成する (名前付き要件) |
| (C++11) |
一様分布したランダムな符号なし整数を返す (名前付き要件) |
| (C++11) |
シードによって定義される、決定論的なUniformRandomBitGenerator (名前付き要件) |
| (C++11) |
別のRandomNumberEngineの出力を変換するRandomNumberEngine (名前付き要件) |
| (C++11) |
与えられた数学的な確率密度関数に従って分布した乱数を返す (名前付き要件) |
並行性 | |
| (C++11) |
実行エージェント (スレッドなど) に対して排他的所有権セマンティクスを提供する (名前付き要件) |
| (C++11) |
ロック取得の試行をサポートするBasicLockable (名前付き要件) |
| (C++11) |
時間指定付きのロック取得をサポートするLockable (名前付き要件) |
| (C++14) |
実行エージェント (スレッドなど) に対して共有所有権セマンティクスを提供する (名前付き要件) |
| (C++14) |
時間指定付きのロック取得をサポートするSharedLockable (名前付き要件) |
| (C++11) |
データ競合から保護し、逐次一貫性のある同期を行うLockable (名前付き要件) |
| (C++11) |
データ競合から保護し、逐次一貫性のある同期を行うTimedLockable (名前付き要件) |
| (C++17) |
共有所有権セマンティクスをサポートするMutex (名前付き要件) |
| (C++14) |
共有所有権セマンティクスをサポートするTimedMutex (名前付き要件) |
Ranges | |
| (C++20) |
viewable_rangeと追加の引数からレンジアダプタを作成するFunctionObject(名前付き要件) |
| (C++20) |
パイプ演算子をサポートするFunctionObject (名前付き要件) |
多次元ビューのカスタマイズ | |
| (C++23) |
mdspanにおける多次元インデックスのマッピングを制御する (名前付き要件) |
| (C++23) |
LayoutMapping要件を保持するポリシー (名前付き要件) |
| (C++23) |
mdspanにおけるデータハンドルへのアクセスを制御するポリシー (名前付き要件) |
その他 | |
| (C++11) |
型のプロパティを記述する (名前付き要件) |
| (C++11) |
2つの型の間の関係を記述する (名前付き要件) |
| (C++11) |
型のプロパティを変更する (名前付き要件) |
| (C++11) |
時間間隔、時点、および現在の時点を取得する関数をまとめたもの (名前付き要件) |
| (C++11) |
例外を投げないClock (名前付き要件) |
| 文字型のための型と関数を定義する (名前付き要件) | |
| ビットセット、整数、または列挙型 (名前付き要件) | |
| 初期化が実質的に代入と等価である型 (名前付き要件) | |
| (C++11) |
正規表現ライブラリで使用される型と関数を定義する (名前付き要件) |
| (C++11) |
constexprコンストラクタを持つ型 (名前付き要件) |
| このセクションは未完成です 理由:他に不足している要件はありますか? |