C++ 标准库扩展

来自cppreference.com

C++ 库基础扩展 (The C++ Extensions for Library Fundamentals) , ISO/IEC TS 19568:2015 为 C++ 标准库定义下列新组件:

目录

[编辑] 未并入 C++17

C++17 未选择 ISO/IEC TS 19568:2015 的下列组件

[编辑] 支持类型擦除分配器的既存类修改版本

定义于头文件 <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
(类) [编辑]
线程不安全的,在不同块大小的池中管理分配的 memory_resource
(类) [编辑]
特殊用途的 memory_resource ,它仅在销毁资源时释放分配的内存
(类)
支持运行时多态的分配器,多态基于构造所用的 memory_resource
(类模板)
返回程序范畴内静态的 memory_resource ,它用全局 operator newoperator delete 分配和释放内存
(函数) [编辑]
返回不进行分配的静态 memory_resource
(函数) [编辑]
获取默认 memory_resource
(函数) [编辑]
设置默认 memory_resource
(函数) [编辑]

[编辑] 使用多态分配器的容器的便利别名

std::experimental::pmr 命名空间中为标准库中的下列类模板提供便利别名和别名模板

提供了便利别名的容器模板列表
  • std::vector
  • std::deque
  • std::forward_list
  • std::list
  • std::basic_string
  • std::map
  • std::multimap
  • std::set
  • std::multiset
  • std::match_results
  • std::unordered_map
  • std::unordered_multimap
  • std::unordered_set
  • std::unordered_multiset

[编辑] 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>
以参数的 tuple 调用函数
(函数模板)

另外,该 TS 为标准库中的类型特性和其他类模板提供大量 constexpr 变量模板

提供了变量模板的类型特性和其他类模板
  • std::is_void
  • std::is_null_pointer
  • std::is_integral
  • std::is_floating_point
  • std::is_array
  • std::is_pointer
  • std::is_lvalue_reference
  • std::is_rvalue_reference
  • std::is_member_object_pointer
  • std::is_member_function_pointer
  • std::is_enum
  • std::is_union
  • std::is_class
  • std::is_function
  • std::is_reference
  • std::is_arithmetic
  • std::is_fundamental
  • std::is_object
  • std::is_scalar
  • std::is_compound
  • std::is_member_pointer
  • std::is_const
  • std::is_volatile
  • std::is_trivial
  • std::is_trivially_copyable
  • std::is_standard_layout
  • std::is_pod
  • std::is_literal_type
  • std::is_empty
  • std::is_polymorphic
  • std::is_abstract
  • std::is_final
  • std::is_signed
  • std::is_unsigned
  • std::is_constructible
  • std::is_trivially_constructible
  • std::is_nothrow_constructible
  • std::is_default_constructible
  • std::is_trivially_default_constructible
  • std::is_nothrow_default_constructible
  • std::is_copy_constructible
  • std::is_trivially_copy_constructible
  • std::is_nothrow_copy_constructible
  • std::is_move_constructible
  • std::is_trivially_move_constructible
  • std::is_nothrow_move_constructible
  • std::is_assignable
  • std::is_trivially_assignable
  • std::is_nothrow_assignable
  • std::is_copy_assignable
  • std::is_trivially_copy_assignable
  • std::is_nothrow_copy_assignable
  • std::is_move_assignable
  • std::is_trivially_move_assignable
  • std::is_nothrow_move_assignable
  • std::is_destructible
  • std::is_trivially_destructible
  • std::is_nothrow_destructible
  • std::has_virtual_destructor
  • std::alignment_of
  • std::rank
  • std::extent
  • std::is_same
  • std::is_base_of
  • std::is_convertible
  • std::ratio_equal
  • std::ratio_not_equal
  • std::ratio_less
  • std::ratio_less_equal
  • std::ratio_greater
  • std::ratio_greater_equal
  • std::tuple_size
  • std::chrono::treat_as_floating_point
  • std::is_error_code_enum
  • std::is_error_condition_enum
  • std::is_bind_expression
  • std::is_placeholder
  • std::uses_allocator

[编辑] 特性测试宏

定义于头文件 <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 的值,指示支持采样算法
(宏常量)