C++標準ライブラリ拡張 バージョン2
From cppreference.com
< cpp | experimental
C++ライブラリ基本拡張 バージョン2 (ISO/IEC TS 19568:2017) では、バージョン1で定義されたものに加えて、C++標準ライブラリに以下の新しいコンポーネントを定義しています。
目次 |
[編集] C++ detection idiom
| ヘッダ
<experimental/type_traits> で定義 | |
| テンプレートIDが有効かどうかを検出するエイリアステンプレート (エイリアステンプレート) | |
| 失敗時にdetected_tが返すクラス型 (クラス) | |
[編集] ポインタ風オブジェクトのためのconst伝播ラッパー
| ヘッダ
<experimental/propagate_const> で定義 | |
| ポインタ風オブジェクトのためのconst伝播ラッパー (クラステンプレート) | |
[編集] 所有権を持たないポインタ
| ヘッダ
<experimental/memory> で定義 | |
| 所有権を持たないポインタを表すクラス (クラステンプレート) | |
[編集] std::arrayの生成
| ヘッダ
<experimental/array> で定義 | |
| (Library Fundamentals TS v2) |
サイズと、任意で要素型を引数から推論してstd::arrayオブジェクトを生成する (関数テンプレート) |
[編集] ostream_joiner
| ヘッダ
<experimental/iterator> で定義 | |
| 連続する要素を出力ストリームに書き込み、隣接する要素を区切り文字で区切る出力イテレータ (クラステンプレート) | |
[編集] 単純な乱数生成機能
型std::default_random_engineのスレッド毎エンジンが、予測不可能な状態で初期化され、各スレッドで維持され、以下の関数で使用される。
| ヘッダ
<experimental/random> で定義 | |
| 指定された範囲のランダムな整数を生成する (関数テンプレート) | |
| スレッド毎の乱数エンジンを再シードする (関数) | |
| ヘッダ
<experimental/algorithm> で定義 | |
| シーケンスからn個のランダムな要素を選択する (関数テンプレート) | |
| 範囲内の要素をランダムに並べ替える (関数テンプレート) | |
[編集] 機能テストマクロ
| ヘッダ
<experimental/type_traits> で定義 | |
| __cpp_lib_experimental_logical_traits |
値が201511以上の場合、論理演算子型特性がサポートされていることを示す (マクロ定数) |
| __cpp_lib_experimental_detect |
値が201505以上の場合、detection idiomがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/propagate_const> で定義 | |
| __cpp_lib_experimental_propagate_const |
値が201505以上の場合、propagate_constがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/functional> で定義 | |
| __cpp_lib_experimental_not_fn |
値が201406以上の場合、not_fnがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/memory> で定義 | |
| __cpp_lib_experimental_observer_ptr |
値が201411以上の場合、observer_ptrがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/array> で定義 | |
| __cpp_lib_experimental_make_array |
値が201505以上の場合、make_arrayがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/iterator> で定義 | |
| __cpp_lib_experimental_ostream_joiner |
値が201411以上の場合、ostream_joinerがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/vector> で定義 | |
| __cpp_lib_experimental_erase_if |
値が201411以上の場合、統一的なコンテナ要素の削除がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/numeric> で定義 | |
| __cpp_lib_experimental_gcd_lcm |
値が201411以上の場合、gcdとlcmがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/random> で定義 | |
| __cpp_lib_experimental_randint |
値が201511以上の場合、randintと関連関数がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/source_location> で定義 | |
| __cpp_lib_experimental_source_location |
値が201505以上の場合、source_locationがサポートされていることを示す (マクロ定数) |
[編集] C++17にマージ
ライブラリ基本 v2 の以下のコンポーネントは、C++17標準に採択されました。
| ヘッダ
<experimental/type_traits> で定義 | |
voidのための可変長エイリアステンプレート(エイリアステンプレート) | |
| ヘッダ
<experimental/type_traits> で定義 | |
| 可変長論理ANDメタ関数 (クラステンプレート) | |
| 可変長論理ORメタ関数 (クラステンプレート) | |
| 論理NOTメタ関数 (クラステンプレート) | |
| ヘッダ
<experimental/functional> で定義 | |
| 保持する関数オブジェクトの結果の補数を返す関数オブジェクトを作成する (関数テンプレート) | |
| ヘッダ
<experimental/numeric> で定義 | |
2つの整数の最大公約数を返すconstexpr関数テンプレート(関数テンプレート) | |
2つの整数の最小公倍数を返すconstexpr関数テンプレート(関数テンプレート) | |
[編集] C++20にマージ
ライブラリ基本 v2 の以下のコンポーネントは、C++20標準に採択されました。
[編集] 統一的なコンテナ要素の削除
| ヘッダ
<experimental/string> で定義 | |
| std::basic_stringから特定の値に等しいすべての要素を削除する (関数テンプレート) | |
| std::basic_stringから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/deque> で定義 | |
| std::dequeから特定の値に等しいすべての要素を削除する (関数テンプレート) | |
| std::dequeから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/vector> で定義 | |
| std::vectorから特定の値に等しいすべての要素を削除する (関数テンプレート) | |
| std::vectorから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/forward_list> で定義 | |
| std::forward_listから特定の値に等しいすべての要素を削除する (関数テンプレート) | |
| std::forward_listから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/list> で定義 | |
| std::listから特定の値に等しいすべての要素を削除する (関数テンプレート) | |
| std::listから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/map> で定義 | |
| std::mapから述語を満たすすべての要素を削除する (関数テンプレート) | |
| std::multimapから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/set> で定義 | |
| std::setから述語を満たすすべての要素を削除する (関数テンプレート) | |
| std::multisetから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/unordered_map> で定義 | |
| std::unordered_mapから述語を満たすすべての要素を削除する (関数テンプレート) | |
| std::unordered_multimapから述語を満たすすべての要素を削除する (関数テンプレート) | |
| ヘッダ
<experimental/unordered_set> で定義 | |
| std::unordered_setから述語を満たすすべての要素を削除する (関数テンプレート) | |
| std::unordered_multisetから述語を満たすすべての要素を削除する (関数テンプレート) | |
[編集] ソースコード情報の取得
| ヘッダ
<experimental/source_location> で定義 | |
| ファイル名、行番号、関数名などのソースコードに関する情報を表すクラス (クラス) | |
[編集] std::arrayへの変換
| ヘッダ
<experimental/array> で定義 | |
| 組み込み配列からstd::arrayオブジェクトを生成する (関数テンプレート) | |