C++標準ライブラリ拡張
From cppreference.com
< cpp | experimental
C++ Extensions for Library Fundamentals Version 1 (ISO/IEC TS 19568:2015) は、C++標準ライブラリに以下の新しいコンポーネントを定義しています。
目次 |
[編集] C++17への採択が見送られた機能
ISO/IEC TS 19568:2015の以下のコンポーネントは、C++17への採択が見送られました。
[編集] 型消去アロケータをサポートするための既存クラスの修正版
| ヘッダ
<experimental/functional> で定義 | |
| 型消去アロケータをサポートするstd::functionの修正版 (クラステンプレート) | |
| ヘッダ
<experimental/future>で定義 | |
| 型消去アロケータをサポートするstd::promiseの修正版 (クラステンプレート) | |
| 型消去アロケータをサポートするstd::packaged_taskの修正版 (クラステンプレート) | |
[編集] メモリリソースアダプタ
| アロケータをmemory_resourceに適合させる (エイリアステンプレート) |
[編集] 汎用ユーティリティ
| ヘッダ
<experimental/utility>で定義 | |
| アロケータなどにおける型消去のためのプレースホルダ型 (クラス) | |
| ヘッダ
<experimental/type_traits> で定義 | |
| 与えられた引数型で呼び出し可能オブジェクトを呼び出した際の、暗黙の関数型を推論する (クラステンプレート) | |
[編集] 機能テストマクロ
| ヘッダ
<experimental/optional>で定義 | |
| __cpp_lib_experimental_optional |
値が201411以上の場合、optional型がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/any>で定義 | |
| __cpp_lib_experimental_any |
値が201411以上の場合、any型がサポートされていることを示す (マクロ定数) |
| __cpp_lib_experimental_string_view |
値が201411以上の場合、basic_string_viewテンプレートがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/tuple>で定義 | |
| __cpp_lib_experimental_apply |
値が201402以上の場合、タプルapply()関数がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/type_traits> で定義 | |
| __cpp_lib_experimental_type_trait_variable_templates |
値が201402以上の場合、変数テンプレートの型特性がサポートされていることを示す (マクロ定数) |
| __cpp_lib_experimental_invocation_type |
値が201406以上の場合、invocation型特性がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/functional> で定義 | |
| __cpp_lib_experimental_boyer_moore_searching |
値が201411以上の場合、追加の検索アルゴリズムがサポートされていることを示す (マクロ定数) |
| __cpp_lib_experimental_function_erased_allocator |
値が201406以上の場合、std::functionの型消去アロケータがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/future>で定義 | |
| __cpp_lib_experimental_promise_erased_allocator |
値が201406以上の場合、std::promiseの型消去アロケータがサポートされていることを示す (マクロ定数) |
| __cpp_lib_experimental_packaged_task_erased_allocator |
値が201406以上の場合、std::packaged_taskの型消去アロケータがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/memory> で定義 | |
| __cpp_lib_experimental_shared_ptr_arrays |
値が201406以上の場合、shared_ptrの配列がサポートされていることを示す (マクロ定数) |
| ヘッダー
<experimental/memory_resource> で定義 | |
| __cpp_lib_experimental_memory_resources |
値が201402以上の場合、多相メモリリソースがサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/algorithm> で定義 | |
| __cpp_lib_experimental_sample |
値が201402の場合、sampleアルゴリズムがサポートされていることを示す (マクロ定数) |
[編集] C++17にマージされた機能
ISO/IEC TS 19568:2015の以下のコンポーネントは、C++17に採択されました。
[編集] optionalオブジェクト
| ヘッダ
<experimental/optional>で定義 | |
| optionalオブジェクトを表すクラステンプレート (クラステンプレート) | |
[編集] anyクラス
| ヘッダ
<experimental/any>で定義 | |
| 任意の型の単一の値を保持するための型安全なコンテナ (クラス) | |
[編集] string_view
| 所有権を持たない文字列への参照 (クラステンプレート) | |
[編集] 型消去された多相アロケータ
[編集] 多相アロケータとメモリリソース
このセクションのエンティティはstd::experimental::pmr名前空間で宣言されます。
| ヘッダー
<experimental/memory_resource> で定義 | |
| メモリリソースをカプセル化するクラスのための抽象インターフェース (クラス) | |
| 異なるブロックサイズのプールでメモリ割り当てを管理するための、スレッドセーフなmemory_resource (クラス) | |
| 異なるブロックサイズのプールでメモリ割り当てを管理するための、スレッドセーフではないmemory_resource (クラス) | |
| 割り当てたメモリをリソースが破棄されるときにのみ解放する、特殊なmemory_resource (クラス) | |
| 構築時に与えられたmemory_resourceに基づいて実行時多相性をサポートするアロケータ (クラステンプレート) | |
メモリの確保と解放にグローバルなoperator newとoperator deleteを使用する、静的なプログラムワイドなmemory_resourceを返す(関数) | |
割り当てを一切行わない静的なmemory_resourceを返す(関数) | |
デフォルトのmemory_resourceを取得する(関数) | |
デフォルトのmemory_resourceを設定する(関数) | |
[編集] 多相アロケータを使用するコンテナの便利な別名
多相アロケータを使用するコンテナのための便利な別名とエイリアステンプレートが、std::experimental::pmr名前空間で以下の標準ライブラリのクラステンプレートに対して提供されます。
| 便利な別名が提供されるコンテナテンプレートのリスト |
|---|
[編集]
| ヘッダ
<experimental/memory> で定義 | |
| Class | 説明 |
| 配列をサポートするstd::shared_ptrの修正版 (クラステンプレート) | |
| 配列をサポートするstd::weak_ptrの修正版 (クラステンプレート) | |
[編集] サンプリングおよび検索アルゴリズム
| ヘッダ
<experimental/algorithm> で定義 | |
| シーケンスからn個のランダムな要素を選択する (関数テンプレート) | |
| シーケンスにSearcherを適用する (関数テンプレート) | |
| ヘッダ
<experimental/functional> で定義 | |
| 標準C++ライブラリの探索アルゴリズム実装 (クラステンプレート) | |
| default_searcherを作成するためのヘルパー関数 (関数テンプレート) | |
| ボイヤー・ムーア法探索アルゴリズム実装 (クラステンプレート) | |
| boyer_moore_searcherを作成するためのヘルパー関数 (関数テンプレート) | |
| ボイヤー・ムーア・ホースプール法探索アルゴリズム実装 (クラステンプレート) | |
| boyer_moore_horspool_searcherを作成するためのヘルパー関数 (関数テンプレート) | |
[編集] 汎用ユーティリティ
| ヘッダ
<experimental/tuple>で定義 | |
| 引数のタプルに対して関数を呼び出す (関数テンプレート) | |
さらに、TSは以下の標準ライブラリの型特性やその他のクラステンプレートに対して、数多くのconstexpr変数テンプレートを提供します。