Namespaces
Variants

C++ standard libraries extensions

From cppreference.net

C++ライブラリ基盤拡張のバージョン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型がサポートされていることを示す
(マクロ定数)
定義済みヘッダー <experimental/string_view>
__cpp_lib_experimental_string_view
少なくとも 201411 の値はbasic_string_viewテンプレートがサポートされていることを示す
(マクロ定数)
定義済みヘッダー <experimental/tuple>
__cpp_lib_experimental_apply
少なくとも 201402 の値はtuple apply()関数がサポートされていることを示す
(マクロ定数)
定義済みヘッダー <experimental/type_traits>
__cpp_lib_experimental_type_trait_variable_templates
少なくとも 201402 の値は可変テンプレート型特性がサポートされていることを示す
(マクロ定数)
__cpp_lib_experimental_invocation_type
少なくとも 201406 の値は呼び出し型特性がサポートされていることを示す
(マクロ定数)
定義済みヘッダー <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オブジェクト

オプショナルオブジェクト を表すクラステンプレート
(クラステンプレート)

class any

定義ヘッダー <experimental/any>
任意の型の単一値を格納する型安全なコンテナ
(クラス)

string_view

定義済みヘッダー <experimental/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 名前空間で提供されています:

利便性のためのエイリアスが提供されているコンテナテンプレートの一覧

shared_ptr の配列サポート

定義済みヘッダ <experimental/memory>
クラス 説明
配列をサポートする std::shared_ptr の修正版
(クラステンプレート)
配列をサポートする std::weak_ptr の修正版
(クラステンプレート)

サンプリングおよび探索アルゴリズム

ヘッダーで定義 <experimental/algorithm>
シーケンスからn個のランダムな要素を選択する
(関数テンプレート)
シーケンスにSearcherを適用する
(関数テンプレート)
ヘッダーで定義 <experimental/functional>
標準C++ライブラリの検索アルゴリズム実装
(クラステンプレート)
default_searcherを作成するヘルパー関数
(関数テンプレート)
Boyer-Moore検索アルゴリズムの実装
(クラステンプレート)
boyer_moore_searcherを作成するヘルパー関数
(関数テンプレート)
Boyer-Moore-Horspool検索アルゴリズムの実装
(クラステンプレート)
boyer_moore_horspool_searcherを作成するヘルパー関数
(関数テンプレート)

一般ユーティリティ

ヘッダーで定義 <experimental/tuple>
引数のタプルに関数を適用する
(関数テンプレート)

さらに、TSは標準ライブラリの以下の型特性およびその他のクラステンプレートに対して 多数の constexpr 変数テンプレート を提供します:

変数テンプレートが提供される型特性およびその他のクラステンプレートの一覧