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 数组
(宏常量)
__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>
表示 可选对象 的类模板
(类模板)

any

定义于头文件 <experimental/any>
用于存储任意类型单个值的类型安全容器
(类)

string_view

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

类型擦除与多态分配器

多态分配器与内存资源

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

封装内存资源的抽象接口类
(类)
线程安全的 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 修改版本
(class template)

采样与搜索算法

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

通用工具

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

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

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