名前空間
変種
操作

C++ 標準ライブラリ拡張

提供: cppreference.com
 
 
技術仕様書
ファイルシステムライブラリ (filesystem TS)
ライブラリ基礎 (library fundamentals TS)
ライブラリ基礎2 (library fundamentals 2 TS)
並列処理のための拡張 (parallelism TS)
並列処理のための拡張2 (parallelism TS v2)
並行処理のための拡張 (concurrency TS)
コンセプト (concepts TS)
範囲 (ranges TS)
特殊な数学関数 (special math TR)
 
 

ライブラリ基礎のための 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> で定義
指定された引数型で呼ばれたときの呼び出し可能オブジェクトの暗示される関数型を推定します
(クラステンプレート)

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

ISO/IEC TS 19568:2015 の以下のコンポーネントは C++17 に含められました。

[編集] オプショナルなオブジェクト

ヘッダ <experimental/optional> で定義
オプショナルなオブジェクトを表すクラステンプレート
(クラステンプレート)

[編集] クラス any

ヘッダ <experimental/any> で定義
任意の型の単一の値のための型安全なコンテナ
(クラス)

[編集] string_view

ヘッダ <experimental/string_view> で定義
文字列への非所有参照
(クラステンプレート)

[編集] 型消去されたアロケータと多相アロケータ

[編集] 多相アロケータとメモリリソース

この節のエンティティは std::experimental::pmr 名前空間で宣言されています。

ヘッダ <experimental/memory_resource> で定義
メモリリソースをカプセル化するクラスのための抽象インタフェース
(クラス)
様々なブロックサイズのプールでメモリ確保を管理するスレッドセーフな memory_resource
(クラス) [edit]
様々なブロックサイズのプールでメモリ確保を管理するスレッドセーフでない memory_resource
(クラス) [edit]
リソースが破棄されるときにのみ確保されたメモリを解放する特殊な目的の memory_resource
(クラス)
構築時に指定された memory_resource をベースとした実行時ポリモーフィズムをサポートするアロケータ
(クラステンプレート)
グローバルな operator newoperator delete を使用してメモリの確保および解放を行う static でプログラムワイドな memory_resource を返します
(関数) [edit]
確保を行わない static な memory_resource を返します
(関数) [edit]
デフォルトの memory_resource を取得します
(関数) [edit]
デフォルトの memory_resource を設定します
(関数) [edit]

[編集] 多相アロケータを用いるコンテナのための便利なエイリアス

多相アロケータを用いるコンテナのための便利なエイリアスとエイリアステンプレートが標準ライブラリの以下のクラステンプレートに対して std::experimental::pmr 名前空間で提供されます。

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

[編集] shared_ptr に対する配列サポート

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

[編集] 標本化と検索のアルゴリズム

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

[編集] 汎用ユーティリティ

ヘッダ <experimental/tuple> で定義
引数のタプルを用いて関数を呼びます
(関数テンプレート)

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

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

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

ヘッダ <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 以上の値であれば、タプルの 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 アルゴリズムがサポートされることを表します
(マクロ定数)