Version 1 of the C++ Extensions for Library Fundamentals, ISO/IEC TS 19568:2015 defines the following new components for the C++ standard library:
Not selected for inclusion in C++17
The following components of ISO/IEC TS 19568:2015 were not selected for inclusion in C++17.
Modified versions of existing classes to support type-erased allocators
Memory resource adaptors
General utilities
Feature test macros
Defined in header
__cpp_lib_experimental_optional
a value of at least 201411 indicates that the optional type is supported
(macro constant)Defined in header
__cpp_lib_experimental_any
a value of at least 201411 indicates that the any type is supported
(macro constant)Defined in header
__cpp_lib_experimental_string_view
a value of at least 201411 indicates that basic_string_view template is supported
(macro constant)Defined in header
__cpp_lib_experimental_apply
a value of at least 201402 indicates that the tuple apply() function is supported
(macro constant)Defined in header
__cpp_lib_experimental_type_trait_variable_templates
a value of at least 201402 indicates that variable template type traits are supported
(macro constant)__cpp_lib_experimental_invocation_type
a value of at least 201406 indicates that invocation type traits are supported
(macro constant)Defined in header
__cpp_lib_experimental_boyer_moore_searching
a value of at least 201411 indicates that additional searching algorithms are supported
(macro constant)__cpp_lib_experimental_function_erased_allocator
a value of at least 201406 indicates that type-erased allocator for std::function is supported
(macro constant)Defined in header
__cpp_lib_experimental_promise_erased_allocator
a value of at least 201406 indicates that type-erased allocator for std::promise is supported
(macro constant)__cpp_lib_experimental_packaged_task_erased_allocator
a value of at least 201406 indicates that type-erased allocator for std::packaged_task is supported
(macro constant)Defined in header
__cpp_lib_experimental_shared_ptr_arrays
a value of at least 201406 indicates that shared_ptr arrays are supported
(macro constant)Defined in header
<experimental/memory_resource>
__cpp_lib_experimental_memory_resources
a value of at least 201402 indicates that polymorphic memory resources are supported
(macro constant)Defined in header
__cpp_lib_experimental_sample
a value of 201402 indicates that the sample algorithm is supported
(macro constant)Merged into C++17
The following components of ISO/IEC TS 19568:2015 were included into C++17.
optional objects
class any
string_view
Type-erased and polymorphic allocators
Polymorphic allocators and memory resources
The entities in this section are declared in the std::experimental::pmr namespace.
Defined in header
<experimental/memory_resource>
an abstract interface for classes that encapsulate memory resources
(class)
a thread-safe
for managing allocations in pools of different block sizes
(class)
a thread-unsafe
for managing allocations in pools of different block sizes
(class)
a special-purpose memory_resource that releases the allocated memory only when the resource is destroyed
(class)
an allocator that supports run-time polymorphism based on the memory_resource it is constructed with
(class template)
returns a static program-wide memory_resource that uses the global
and
to allocate and deallocate memory
(function)
returns a static memory_resource that performs no allocation
(function)
gets the default memory_resource
(function)
sets the default memory_resource
(function)
Convenience aliases for containers using polymorphic allocators
Convenience aliases and alias templates
for containers using polymorphic allocators are provided in the std::experimental::pmr namespace for the following class templates in the standard library:
List of container templates for which convenience aliases are provided
Array support for shared_ptr
Sampling and searching algorithms
Defined in header
selects n random elements from a sequence
(function template)
applies a Searcher to a sequence
(function template)Defined in header
standard C++ library search algorithm implementation
(class template)
helper function to create a default_searcher
(function template)
Boyer-Moore search algorithm implementation
(class template)
helper function to create a boyer_moore_searcher
(function template)
Boyer-Moore-Horspool search algorithm implementation
(class template)
make_boyer_moore_horspool_searcher
helper function to create a boyer_moore_horspool_searcher
(function template)General utilities
In addition, the TS provides
numerous constexpr variable templates
for the following type traits and other class templates in the standard library:
List of type traits and other class templates for which variable templates are provided
std::is_member_function_pointer
std::is_trivially_constructible
std::is_trivially_default_constructible
std::is_nothrow_default_constructible
std::is_trivially_copy_constructible
std::is_nothrow_copy_constructible
std::is_trivially_move_constructible
std::is_nothrow_move_constructible
std::is_trivially_copy_assignable
std::is_nothrow_copy_assignable
std::is_trivially_move_assignable
std::is_nothrow_move_assignable
std::is_trivially_destructible
std::tuple_size