名前空間
変種
操作

C++ 標準ライブラリ拡張バージョン2

提供: cppreference.com

ライブラリ基礎のための C++ 拡張バージョン2、 ISO/IEC TS 19568:2017 は、バージョン1で定義されているものに加えて、 C++ 標準ライブラリに対する以下の新しいコンポーネントを定義します。


目次

[編集] C++ のディテクションイディオム

ヘッダ <experimental/type_traits> で定義
template-id が well-formed かどうかを検出するエイリアステンプレート
(エイリアステンプレート)
失敗時に detected_t によって返されるクラス型
(クラス)

[編集] ポインタライクなオブジェクトのための const 伝播ラッパー

ヘッダ <experimental/propagate_const> で定義
ポインタライクなオブジェクトのための const 伝播ラッパー
(クラステンプレート)

[編集] 非所有ポインタ

ヘッダ <experimental/memory> で定義
非所有ポインタを表すクラス
(クラステンプレート)

[編集] std::array の作成

ヘッダ <experimental/array> で定義
サイズと要素型を引数から推定した std::array オブジェクトを作成します
(関数テンプレート) [edit]
組み込みの配列から std::array オブジェクトを作成します
(関数テンプレート) [edit]

[編集] ostream_joiner

ヘッダ <experimental/iterator> で定義
隣接する要素をデリミタで区切りながら出力ストリームに一連の要素を書き込む出力イテレータ
(クラステンプレート)

[編集] 単純な乱数生成機能

予測できない状態に初期化された std::default_random_engine 型のスレッドごとのエンジンが、それぞれのスレッドに対して管理され、以下の関数で使用されます。

ヘッダ <experimental/random> で定義
指定された範囲のランダムな整数を生成します
(関数テンプレート) [edit]
スレッドごとのランダムエンジンを再シードします
(関数) [edit]
ヘッダ <experimental/algorithm> で定義
シーケンスからランダムな要素を n 個選択します
(関数テンプレート)
範囲内の要素をランダムに並べ替えます
(関数テンプレート)

[編集] ソースコード情報のキャプチャ

ヘッダ <experimental/source_location> で定義
ファイル名、行番号、関数名などの、ソースコードに関する情報を表すクラス
(クラス)

[編集] 機能テストマクロ

ヘッダ <experimental/type_traits> で定義
__cpp_lib_experimental_logical_traits
201511 以上の値であれば、論理演算子型特性がサポートされていることを表します
(マクロ定数)
__cpp_lib_experimental_detect
201505 以上の値であれば、ディテクションイディオムがサポートされていることを表します
(マクロ定数)
ヘッダ <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 以上の値であれば、 gcdlcm がサポートされていることを表します
(マクロ定数)
ヘッダ <experimental/random> で定義
__cpp_lib_experimental_randint
201511 以上の値であれば、 randint とそれに関連する関数がサポートされていることを表します
(マクロ定数)
ヘッダ <experimental/source_location> で定義
__cpp_lib_experimental_source_location
201505 以上の値であれば、 source_location がサポートされていることを表します
(マクロ定数)

[編集] C++17 にマージされたもの

ライブラリ基礎バージョン2の以下のコンポーネントは C++17 標準に採用されました。

ヘッダ <experimental/type_traits> で定義
void に対する可変長引数のエイリアステンプレート
(エイリアステンプレート)
ヘッダ <experimental/type_traits> で定義
可変長引数の論理積メタ関数
(クラステンプレート)
可変長引数の論理和メタ関数
(クラステンプレート)
論理否定メタ関数
(クラステンプレート)
ヘッダ <experimental/functional> で定義
保持する関数オブジェクトの結果の否定を返す関数オブジェクトを作成します
(関数テンプレート) [edit]
ヘッダ <experimental/numeric> で定義
2つの整数の最大公約数を返す constexpr 関数テンプレート
(関数テンプレート) [edit]
2つの整数の最小公倍数を返す constexpr 関数テンプレート
(関数テンプレート) [edit]

[編集] C++20 にマージされたもの

ライブラリ基礎バージョン2の以下のコンポーネントは 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 から削除します
(関数テンプレート)