C++標準ライブラリ拡張、バージョン3
From cppreference.com
< cpp | experimental
C++拡張ライブラリ基礎のバージョン3、ISO/IEC TS 19568:2024は、バージョン1およびバージョン2で定義されたものに加えて、C++標準ライブラリのための以下の新しいコンポーネントを定義します。
C++17/20にマージされたコンポーネントおよびLFTS v3で削除されたコンポーネントは以下の通りです。
- std::experimental::make_array,
- std::experimental::erased_type,
- std::experimental::packaged_task、および
- std::experimental::promise.
[編集] スコープガード
| ヘッダ
<experimental/scope> で定義 | |
| 関数オブジェクトをラップし、スコープを抜ける際にそれを呼び出す (クラステンプレート) | |
| 関数オブジェクトをラップし、例外によってスコープを抜ける際にそれを呼び出す (クラステンプレート) | |
| 関数オブジェクトをラップし、正常にスコープを抜ける際にそれを呼び出す (クラステンプレート) | |
| 汎用的なRAIIリソースハンドルのラッパー (クラステンプレート) | |
[編集] 機能テストマクロ
| ヘッダー
<experimental/memory_resource> で定義 | |
| __cpp_lib_experimental_memory_resources |
値が 201803 以上であることは、resource_adaptor がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/functional> で定義 | |
| __cpp_lib_experimental_function_polymorphic_allocator |
値が 202211 以上であることは、std::experimental::function に std::pmr::polymorphic_allocator<> が使用されることを示す (マクロ定数) |
| ヘッダ
<experimental/scope> で定義 | |
| __cpp_lib_experimental_scope |
値が 201902 以上であることは、スコープガードがサポートされていることを示す (マクロ定数) |
[編集] ノート
LFTS v3では __cpp_lib_experimental_memory_resources の値が増加しました。これは、resource_adaptor の設計が std::pmr::memory_resource をベースにするように変更されたためです。