ユーティリティライブラリ
C++ には、ビット計数から関数の部分適用まで、広範な機能を提供する様々なユーティリティライブラリがあります。 これらのライブラリは大まかに以下の2つのグループに分類できます。
- 言語サポートライブラリ
- 汎用ライブラリ
目次 |
[編集]言語サポート
言語サポートライブラリは言語機能に密に結び付いていたり一般的な言語のイディオムをサポートするクラスや関数を提供します。
[編集]型サポート
基本型 (std::size_t, std::nullptr_t など)、 RTTI (std::type_info など)、型特性 (std::is_integral, std::rank など)。
[編集]処理系の性質
ヘッダ <version> は C++ 標準ライブラリに関する処理系依存の情報 (バージョン番号やリリースの日付など) を供給します。 またライブラリ機能テストマクロも定義します。 | (C++20以上) |
[編集] プログラムユーティリティ
終了 (std::abort, std::atexit など)、環境 (std::system など)、シグナル (std::raise など)。
[編集]動的メモリ管理
スマートポインタ (std::shared_ptr など)、アロケータ (std::allocator や std::pmr::memory_resource など)、 C スタイルのメモリ管理 (std::malloc など)。
[編集]オブジェクトアクセス
ヘッダ <new> で定義 | |
(C++17) | ポインタ最適化バリア (関数テンプレート) |
[編集]エラー処理
例外 (std::exception, std::terminate など)、アサーション (assert など)。
[編集]ソースコード情報のキャプチャ
ヘッダ <source_location> で定義 | |
(C++20) | ソースコードに関する情報 (ファイル名、行番号、および関数名など) を表すクラス (クラス) |
[編集]初期化子リスト
ヘッダ <initializer_list> で定義 | |
(C++11) | リスト初期化で一時的な配列を作成し、それを参照します (クラステンプレート) |
[編集]三方比較
ヘッダ <compare> で定義 | |
指定された型に対して演算子 <=> が一貫した結果を生成することを指定します (コンセプト) | |
(C++20) | 6種類の演算子をすべてサポートし、代用可能でなく、比較不可能な値を許容する、三方比較の結果の型 (クラス) |
(C++20) | 6種類の演算子をすべてサポートする代用可能でない三方比較の結果の型 (クラス) |
(C++20) | 6種類の演算子をすべてサポートする代用可能な三方比較の結果の型 (クラス) |
名前付きの比較関数 (関数) | |
(C++20) | x <=> y を実装する関数オブジェクト (クラス) |
(C++20) | 指定された型に対する三方比較演算子 <=> の結果の型を取得します (クラステンプレート) |
(C++20) | 指定されたすべての型が変換可能な最も強い比較カテゴリ (クラステンプレート) |
(C++20) | 三方比較を行い、 std::strong_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) |
(C++20) | 三方比較を行い、 std::weak_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) |
(C++20) | 三方比較を行い、 std::partial_ordering 型の結果を生成します (カスタマイゼーションポイントオブジェクト) |
三方比較を行い、 std::strong_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) | |
(C++20) | 三方比較を行い、 std::weak_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) |
三方比較を行い、 std::partial_ordering 型の結果を生成します (operator<=> が利用できない場合でも) (カスタマイゼーションポイントオブジェクト) |
[編集]コルーチンサポート
This section is incomplete |
[編集]可変長引数関数
任意の個数の引数を取る関数に対するサポート (va_start, va_arg, va_end など)。
[編集]汎用ユーティリティ
[編集]スワップと型操作
ヘッダ <utility> で定義 | |
2つのオブジェクトの値を入れ替えます (関数テンプレート) | |
(C++14) | 引数を新しい値で置き換え、その以前の値を返します (関数テンプレート) |
(C++11) | 関数の引数を転送します (関数テンプレート) |
(C++11) | 右辺値参照を取得します (関数テンプレート) |
(C++11) | ムーブコンストラクタが例外を投げない場合、右辺値参照を取得します (関数テンプレート) |
(C++17) | 引数への const な参照を取得します (関数テンプレート) |
(C++11) | 未評価文脈で使用するための引数への参照を取得します (関数テンプレート) |
ヘッダ <concepts> で定義 | |
(C++20) | 2つのオブジェクトの値を入れ替えます (カスタマイゼーションポイントオブジェクト) |
[編集]整数比較関数
ヘッダ <utility> で定義 | |
変換による値の変更なしに2つの整数値を比較します (関数テンプレート) | |
(C++20) | 整数値が指定した整数型の範囲内かどうか調べます (関数テンプレート) |
[編集]関係演算子
ヘッダ <utility> で定義 | |
名前空間 std::rel_ops で定義 | |
(C++20で非推奨) | ユーザ定義の operator== および operator< を元に比較演算子を自動生成します (関数テンプレート) |
[編集]ペアとタプル
ヘッダ <utility> で定義 | |
2つ組、つまり2つの値のペアを実装します (クラステンプレート) | |
(C++11) | 区分的構築用の関数オーバーロードを正しく選択するために使用されるタグ型 (クラス) |
(C++11) | 区分的構築用の関数を曖昧さなく選択するために使用される piecewise_construct_t 型のオブジェクト (定数) |
(C++14) | コンパイル時整数列を実装します (クラステンプレート) |
ヘッダ <tuple> で定義 | |
(C++11) | 異なる型の混在できる複数の要素を格納する固定サイズのコンテナを実装します (クラステンプレート) |
(C++17) | タプルを引数として使用して関数を呼びます (関数テンプレート) |
(C++17) | タプルを引数として使用してオブジェクトを構築します (関数テンプレート) |
[編集]オプショナル、バリアント、エニー
ヘッダ <optional> で定義 | |
(C++17) | 値を保持するかもしれないし保持しないかもしれないラッパー (クラステンプレート) |
ヘッダ <variant> で定義 | |
(C++17) | 型安全な共用体 (クラステンプレート) |
ヘッダ <any> で定義 | |
(C++17) | CopyConstructible な型の任意のインスタンスを保持するオブジェクト (クラス) |
ヘッダ <utility> で定義 | |
その場構築のタグ (クラステンプレート) |
[編集]ビット集合
ヘッダ <bitset> で定義 | |
固定長のビット配列を実装します (クラステンプレート) |
[編集]関数オブジェクト
関数の部分適用 (std::bind など) および関連するユーティリティ: std::ref や std::placeholders などバインディングのためのユーティリティ、多相的な関数ラッパー: std::function、定義済みの関数オブジェクト (std::plus, std::equal_to など)、メソッドの関数への変換 (std::mem_fn)。
[編集]ハッシュサポート
ヘッダ <functional> で定義 | |
(C++11) | ハッシュ関数オブジェクト (クラステンプレート) |
[編集]日付と時間
時間追跡 (std::chrono::time_point, std::chrono::duration など)、 C スタイルの日付と時間 (std::time, std::clock など)。
[編集]初等文字列変換
C++ の入出力ライブラリ、 C の入出力ライブラリ、 C++ の文字列変換関数、 C の文字列変換関数によって提供されているローケル依存の洗練されたパーサおよびフォーマッタに加えて、軽量な、ロケール非依存の、メモリ確保を行わない、例外を投げない、算術型に対するパーサおよびフォーマッタが、ヘッダ <charconv> によって提供されます。
ヘッダ <charconv> で定義 | |
(C++17) | 整数値または浮動小数点値を文字シーケンスに変換します (関数) |
(C++17) | 文字シーケンスを整数値または浮動小数点値に変換します (関数) |
(C++17) | std::to_chars および std::from_chars に対する書式を指定します (列挙) |
[編集]書式化ライブラリ
型安全な文字列の書式化のための機能 (std::format、 std::format_to など)。 | (C++20以上) |