C++ standard libraries extensions - cppreference.com
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
| a modified version of std::function with support for type-erased allocators (class template) | |
| a modified version of std::promise with support for type-erased allocators (class template) | |
| a modified version of std::packaged_task with support for type-erased allocators (class template) | |
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 | |
__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 | |
| an abstract interface for classes that encapsulate memory resources (class) | |
| a thread-safe std::experimental::pmr::memory_resource for managing allocations in pools of different block sizes (class) [edit] | |
| a thread-unsafe std::experimental::pmr::memory_resource for managing allocations in pools of different block sizes (class) [edit] | |
| 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 operator new and operator delete to allocate and deallocate memory (function) [edit] | |
returns a static memory_resource that performs no allocation (function) [edit] | |
gets the default memory_resource (function) [edit] | |
sets the default memory_resource (function) [edit] | |
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 |
|---|
|
| Class | Description |
| a modified version of std::shared_ptr that supports arrays (class template) | |
| a modified version of std::weak_ptr that supports arrays (class template) | |
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) | |
| 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 |
|---|
|