C++ standard libraries extensions - cppreference.com (original) (raw)
Version 1 of the C++ Extensions for Library Fundamentals, ISO/IEC TS 19568:2015 defines the following new components for the C++ standard library:
Contents
- 1 Not selected for inclusion in C++17
- 2 Merged into C++17
- 2.1 optional objects
- 2.2 class any
- 2.3 string_view
- 2.4 Type-erased and polymorphic allocators
* 2.4.1 Polymorphic allocators and memory resources
* 2.4.2 Convenience aliases for containers using polymorphic allocators - 2.5 Array support for shared_ptr
- 2.6 Sampling and searching algorithms
- 2.7 General utilities
[edit] Not selected for inclusion in C++17
The following components of ISO/IEC TS 19568:2015 were not selected for inclusion in C++17.
[edit] Modified versions of existing classes to support type-erased allocators
[edit] Memory resource adaptors
[edit] General utilities
[edit] Feature test macros
Defined in header <experimental/optional> | |
---|---|
__cpp_lib_experimental_optional | a value of at least 201411 indicates that the optional type is supported (macro constant) |
Defined in header <experimental/any> | |
__cpp_lib_experimental_any | a value of at least 201411 indicates that the any type is supported (macro constant) |
Defined in header <experimental/string_view> | |
__cpp_lib_experimental_string_view | a value of at least 201411 indicates that basic_string_view template is supported (macro constant) |
Defined in header <experimental/tuple> | |
__cpp_lib_experimental_apply | a value of at least 201402 indicates that the tuple apply() function is supported (macro constant) |
Defined in header <experimental/type_traits> | |
__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 <experimental/functional> | |
__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 <experimental/future> | |
__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 <experimental/memory> | |
__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 <experimental/algorithm> | |
__cpp_lib_experimental_sample | a value of 201402 indicates that the sample algorithm is supported (macro constant) |
[edit] Merged into C++17
The following components of ISO/IEC TS 19568:2015 were included into C++17.
[edit] optional objects
[edit] class any
[edit] string_view
[edit] Type-erased and polymorphic allocators
[edit] Polymorphic allocators and memory resources
The entities in this section are declared in the std::experimental::pmr namespace.
Defined in header <experimental/memory_resource> | |
---|---|
memory_resource | an abstract interface for classes that encapsulate memory resources (class) |
synchronized_pool_resource | a thread-safe memory_resource for managing allocations in pools of different block sizes (class) [edit] |
unsynchronized_pool_resource | a thread-unsafe memory_resource for managing allocations in pools of different block sizes (class) [edit] |
monotonic_buffer_resource | a special-purpose memory_resource that releases the allocated memory only when the resource is destroyed (class) |
polymorphic_allocator | an allocator that supports run-time polymorphism based on the memory_resource it is constructed with (class template) |
new_delete_resource | returns a static program-wide memory_resource that uses the global operator new and operator delete to allocate and deallocate memory (function) [edit] |
null_memory_resource | returns a static memory_resource that performs no allocation (function) [edit] |
get_default_resource | gets the default memory_resource (function) [edit] |
set_default_resource | sets the default memory_resource (function) [edit] |
[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:
[edit] Array support for shared_ptr
[edit] Sampling and searching algorithms
Defined in header <experimental/algorithm> | |
---|---|
sample | selects n random elements from a sequence (function template) |
search | applies a Searcher to a sequence (function template) |
Defined in header <experimental/functional> | |
default_searcher | standard C++ library search algorithm implementation (class template) |
make_default_searcher | helper function to create a default_searcher (function template) |
boyer_moore_searcher | Boyer-Moore search algorithm implementation (class template) |
make_boyer_moore_searcher | helper function to create a boyer_moore_searcher (function template) |
boyer_moore_horspool_searcher | Boyer-Moore-Horspool search algorithm implementation (class template) |
make_boyer_moore_horspool_searcher | helper function to create a boyer_moore_horspool_searcher (function template) |
[edit] General utilities
In addition, the TS provides numerous constexpr variable templates for the following type traits and other class templates in the standard library: