命名空间
变体
操作

C++ 标准库扩展

来自 cppreference.com

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 的值表示支持可选类型
(宏常量)
定义在头文件 <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 算法
(宏常量)

[编辑] 合并到 C++17 中

ISO/IEC TS 19568:2015 的以下组件已包含在 C++17 中。

[edit] 可选对象

定义在头文件 <experimental/optional>
表示可选对象的类模板
(类模板)

[edit] any

定义在头文件 <experimental/any>
一个类型安全的容器,用于保存任何类型的单个值
(类)

[edit] string_view

定义在头文件 <experimental/string_view>
对字符串的非拥有引用
(类模板)

[edit] 类型擦除和多态分配器

[edit] 多态分配器和内存资源

本节中的实体声明在std::experimental::pmr命名空间中。

定义在头文件 <experimental/memory_resource>
封装内存资源的类的抽象接口
(类)
一个线程安全的memory_resource,用于管理不同块大小的内存池中的分配
(class) [edit]
一个线程不安全的memory_resource,用于管理不同块大小的内存池中的分配
(class) [edit]
一个特殊的memory_resource,它只在资源被销毁时释放分配的内存
(类)
一个分配器,它支持基于它被构造的memory_resource的运行时多态
(类模板)
返回一个静态的程序级memory_resource,它使用全局operator newoperator delete来分配和释放内存
(function) [edit]
返回一个静态的memory_resource,它不执行任何分配
(function) [edit]
获取默认的memory_resource
(function) [edit]
设置默认的memory_resource
(function) [edit]

[edit] 使用多态分配器的容器的便捷别名

便捷别名和别名模板为在std::experimental::pmr命名空间中使用多态分配器的容器提供以下标准库中的类模板

为其提供便捷别名的容器模板列表

[edit] shared_ptr的数组支持

定义在头文件 <experimental/memory>
描述
一个修改后的std::shared_ptr版本,它支持数组
(类模板)
一个修改后的std::weak_ptr版本,它支持数组
(类模板)

[edit] 采样和搜索算法

定义在头文件 <experimental/algorithm>
从序列中选择n个随机元素
(函数模板)
将 Searcher 应用于序列
(函数模板)
定义在头文件 <experimental/functional>
标准 C++ 库搜索算法实现
(类模板)
创建 default_searcher 的辅助函数
(函数模板)
Boyer-Moore 搜索算法实现
(类模板)
创建 boyer_moore_searcher 的辅助函数
(函数模板)
Boyer-Moore-Horspool 搜索算法实现
(类模板)
创建 boyer_moore_horspool_searcher 的辅助函数
(函数模板)

[edit] 通用工具

定义在头文件 <experimental/tuple>
对参数元组调用函数
(函数模板)

此外,TS 还为标准库中的以下类型特征和其他类模板提供了许多constexpr变量模板

为其提供变量模板的类型特征和其他类模板列表