Namespaces
Variants

Named Requirements

From cppreference.net
C++ named requirements

named requirements は、C++標準の規範的なテキストにおいて標準ライブラリの要件を定義するために使用される名前付き要件です。

ライブラリテンプレートがこれらの要件を満たすテンプレート引数でインスタンス化されることを保証する責任はプログラマにあります。これを怠ると、非常に複雑なコンパイラ診断メッセージが発生する可能性があります。

これらの要件の一部はC++20において concepts 言語機能を使用して形式化されています。

目次

基本

その型のオブジェクトがデフォルト構築可能であることを指定する
(名前付き要件)
その型のオブジェクトが右辺値から構築可能であることを指定する
(名前付き要件)
その型のオブジェクトが左辺値から構築可能であることを指定する
(名前付き要件)
その型のオブジェクトが右辺値から代入可能であることを指定する
(名前付き要件)
その型のオブジェクトが左辺値から代入可能であることを指定する
(名前付き要件)
その型のオブジェクトが破棄可能であることを指定する
(名前付き要件)

型プロパティ

注: 標準規格はこのサブカテゴリで指定された名前を持つ名前付き要件を定義していません。
これらはコア言語によって定義された型カテゴリです。一貫性を保つためだけに、名前付き要件としてここに含まれています。
配列型またはクラス型ではないオブジェクト型
(名前付き要件)
(C++20で非推奨)
C言語と互換性のあるPOD (Plain Old Data) 型 struct
(名前付き要件)
これらの型のオブジェクトは、その基礎となるバイトをコピーした後も値を維持できる
(名前付き要件)
(C++11) (C++26で非推奨)
これらの型のオブジェクトは自明に構築およびコピー可能
(名前付き要件)
これらの型は他のプログラミング言語で書かれたコードとの通信に有用です
(named requirement)
これらの型のオブジェクトは暗黙的に作成でき、その生存期間は暗黙的に開始される
(名前付き要件)

ライブラリ全体

論理演算 ( operator && , operator || , および operator ! ) は通常の意味を持つ
(名前付き要件)
operator== は同値関係である
(名前付き要件)
operator< は厳密弱順序関係である
(名前付き要件)
非修飾非メンバー関数呼び出し swap ( ) で交換可能
(名前付き要件)
LegacyIterator を間接参照した結果が Swappable 型であるイテレータ
(名前付き要件)
ヌル値をサポートするポインタライクな型
(名前付き要件)
(C++11)
a FunctionObject 異なる値を持つ入力に対して同じ出力を返す確率が低い
(名前付き要件)
割り当て情報を含むクラス型
(名前付き要件)
関数呼び出し構文で呼び出すことができるオブジェクト
(名前付き要件)
呼び出し操作が定義されている型
(名前付き要件)
引数を変更せずに FunctionObject であり、 bool に変換可能な値を返すもの
(名前付き要件)
2つの引数を変更せずに FunctionObject を返す bool に変換可能な値を返す
(名前付き要件)
順序関係を確立する BinaryPredicate
(名前付き要件)

コンテナ

イテレータを使用した要素アクセスを可能にするデータ構造
(名前付き要件)
双方向イテレータを使用するコンテナ
(名前付き要件)
アロケータを使用するコンテナ
(名前付き要件)
要素が線形に格納されるコンテナ
(名前付き要件)
隣接するメモリアドレスに要素が格納されたコンテナ
(名前付き要件)
キーに関連付けて要素を格納するコンテナ
(名前付き要件)
キーに関連付けてバケットに要素を格納するコンテナ
(名前付き要件)
コンテナ要素
要素は初期化されていないストレージ内でデフォルト構築可能
(名前付き要件)
要素は未初期化ストレージ内でコピー構築可能
(名前付き要件)
要素は初期化されていないストレージ内でムーブ構築可能
(名前付き要件)
要素は未初期化ストレージ内で構築可能
(名前付き要件)
(C++11)
要素はアロケータを使用して破棄可能
(名前付き要件)

イテレータ

一部のデータ構造内のデータにアクセスするための一般的な概念
(名前付き要件)
データの読み取りに使用できるイテレータ
(名前付き要件)
データの書き込みに使用できるイテレータ
(名前付き要件)
データを複数回読み取るために使用できるイテレータ
(名前付き要件)
インクリメントとデクリメントの両方が可能なイテレータ
(名前付き要件)
定数時間で進めることができるイテレータ
(名前付き要件)
連続的に割り当てられた要素へのイテレータ
(名前付き要件)
定数式評価中に使用できるイテレータ
(名前付き要件)

ストリームI/O関数

先頭の空白をスキップせず、処理された文字数をカウントするストリーム入力関数
(名前付き要件)
先頭の空白をスキップするストリーム入力関数
(名前付き要件)
基本的なストリーム出力関数
(名前付き要件)
エラー時にfailbitを設定し、ストリームへの参照を返すストリーム出力関数
(名前付き要件)

フォーマッタ

指定された書式設定引数型と文字型に対する書式設定操作を抽象化する
(名前付き要件)
(C++20)
フォーマットライブラリ で使用される関数を定義する
(名前付き要件)

乱数生成

整数のシーケンスを消費し、32ビット符号なし値のシーケンスを生成する
(名前付き要件)
一様分布するランダムな符号なし整数を返す
(名前付き要件)
決定論的な UniformRandomBitGenerator 、シードによって定義される
(名前付き要件)
他の RandomNumberEngine の出力を変換する RandomNumberEngine
(名前付き要件)
指定された数学的確率密度関数に従って分布する乱数を返す
(名前付き要件)

並行性

実行エージェント(すなわちスレッド)に対して排他的所有権セマンティクスを提供する
(名前付き要件)
(C++11)
試行的なロック取得をサポートする BasicLockable
(名前付き要件)
時間指定ロック取得をサポートする Lockable
(名前付き要件)
実行エージェント(すなわちスレッド)に対して共有所有権セマンティクスを提供する
(名前付き要件)
タイムドロック取得をサポートする SharedLockable
(名前付き要件)
(C++11)
データ競合と逐次一貫性同期から保護する Lockable
(名前付き要件)
(C++11)
データ競合と逐次一貫性同期から保護する TimedLockable
(名前付き要件)
共有所有権セマンティクスをサポートする Mutex
(名前付き要件)
共有所有権セマンティクスをサポートする TimedMutex
(名前付き要件)

範囲

FunctionObject であり、 viewable_range と追加の引数から レンジアダプタ を作成する
(名前付き要件)
パイプ演算子をサポートする FunctionObject
(名前付き要件)

多次元ビューカスタマイズ

多次元インデックスのマッピングを制御する mdspan
(名前付き要件)
LayoutMapping要件を保持するポリシー LayoutMapping
(名前付き要件)
mdspan 内のデータハンドルへのアクセスを制御するポリシー
(名前付き要件)

その他

型の特性を記述する
(名前付き要件)
2つの型の間の関係を記述する
(名前付き要件)
型のプロパティを変更する
(名前付き要件)
(C++11)
時間間隔、時間点、および現在の時間点を取得する関数を集約する
(名前付き要件)
例外をスローしない Clock
(名前付き要件)
文字型のための型と関数を定義する
(名前付き要件)
bitset、整数、または列挙型
(名前付き要件)
初期化が代入と実質的に等価である型
(名前付き要件)
正規表現ライブラリで使用される型と関数を定義する 正規表現ライブラリ
(名前付き要件)
constexprコンストラクタを持つ型
(名前付き要件)