C++ standard libraries extensions, version 2
< cpp | experimental
Version 2 of the C++ Extensions for Library Fundamentals, ISO/IEC TS 19568:2017, defines the following new components for the C++ standard library, in addition to those defined in version 1:
The C++ detection idiom
|
Defined in header
<experimental/type_traits> |
|
| Alias templates that detect whether a template-id is well-formed (alias template) |
|
| Class type returned by detected_t on failure (class) |
|
A const-propagating wrapper for pointer-like objects
|
Defined in header
<experimental/propagate_const> |
|
| A const-propagating wrapper for pointer-like objects (class template) |
|
Non-owning pointers
|
Defined in header
<experimental/memory> |
|
| A class representing a non-owning pointer (class template) |
|
std::array creation
|
Defined in header
<experimental/array> |
|
| Creates a std::array object whose size and optionally element type are deduced from the arguments (function template) |
|
ostream_joiner
|
Defined in header
<experimental/iterator> |
|
| An output iterator that writes successive elements into an output stream, separating adjacent elements with a delimiter (class template) |
|
Simple random number generation facilities
A per-thread engine of type std::default_random_engine, initialized to an unpredictable state, is maintained for each thread and used by the functions below.
|
Defined in header
<experimental/random> |
|
| generates a random integer in the specified range (function template) |
|
| reseeds the per-thread random engine (function) |
|
|
Defined in header
<experimental/algorithm> |
|
| selects n random elements from a sequence (function template) |
|
| randomly re-orders elements in a range (function template) |
|
Feature test macros
|
Defined in header
<experimental/type_traits> |
|
|
__cpp_lib_experimental_logical_traits
|
a value of at least 201511 indicates that the logical operator type traits are supported (macro constant) |
|
__cpp_lib_experimental_detect
|
a value of at least 201505 indicates that the detection idiom is supported (macro constant) |
|
Defined in header
<experimental/propagate_const> |
|
|
__cpp_lib_experimental_propagate_const
|
a value of at least 201505 indicates that propagate_const is supported (macro constant) |
|
Defined in header
<experimental/functional> |
|
|
__cpp_lib_experimental_not_fn
|
a value of at least 201406 indicates that not_fn is supported (macro constant) |
|
Defined in header
<experimental/memory> |
|
|
__cpp_lib_experimental_observer_ptr
|
a value of at least 201411 indicates that observer_ptr is supported (macro constant) |
|
Defined in header
<experimental/array> |
|
|
__cpp_lib_experimental_make_array
|
a value of at least 201505 indicates that make_array is supported (macro constant) |
|
Defined in header
<experimental/iterator> |
|
|
__cpp_lib_experimental_ostream_joiner
|
a value of at least 201411 indicates that ostream_joiner is supported (macro constant) |
|
Defined in header
<experimental/vector> |
|
|
__cpp_lib_experimental_erase_if
|
a value of at least 201411 indicates that uniform container erasure is supported (macro constant) |
|
Defined in header
<experimental/numeric> |
|
|
__cpp_lib_experimental_gcd_lcm
|
a value of at least 201411 indicates that gcd and lcm are supported (macro constant) |
|
Defined in header
<experimental/random> |
|
|
__cpp_lib_experimental_randint
|
a value of at least 201511 indicates that randint and related functions are supported (macro constant) |
|
Defined in header
<experimental/source_location> |
|
|
__cpp_lib_experimental_source_location
|
a value of at least 201505 indicates that source_location is supported (macro constant) |
Merged into C++17
The following components of the library fundamentals v2 have been adopted into the C++17 standard.
|
Defined in header
<experimental/type_traits> |
|
variadic alias template for void(alias template) |
|
|
Defined in header
<experimental/type_traits> |
|
| variadic logical AND metafunction (class template) |
|
| variadic logical OR metafunction (class template) |
|
| logical NOT metafunction (class template) |
|
|
Defined in header
<experimental/functional> |
|
| Creates a function object that returns the complement of the result of the function object it holds (function template) |
|
|
Defined in header
<experimental/numeric> |
|
constexpr function template returning the greatest common divisor of two integers(function template) |
|
constexpr function template returning the least common multiple of two integers(function template) |
|
Merged into C++20
The following components of the library fundamentals v2 have been adopted into the C++20 standard.
Uniform container erasure
|
Defined in header
<experimental/string> |
|
| Erases all elements equal to a specific value from a std::basic_string (function template) |
|
| Erases all elements satisfying a predicate from a std::basic_string (function template) |
|
|
Defined in header
<experimental/deque> |
|
| Erases all elements equal to a specific value from a std::deque (function template) |
|
| Erases all elements satisfying a predicate from a std::deque (function template) |
|
|
Defined in header
<experimental/vector> |
|
| Erases all elements equal to a specific value from a std::vector (function template) |
|
| Erases all elements satisfying a predicate from a std::vector (function template) |
|
|
Defined in header
<experimental/forward_list> |
|
| Erases all elements equal to a specific value from a std::forward_list (function template) |
|
| Erases all elements satisfying a predicate from a std::forward_list (function template) |
|
|
Defined in header
<experimental/list> |
|
| Erases all elements equal to a specific value from a std::list (function template) |
|
| Erases all elements satisfying a predicate from a std::list (function template) |
|
|
Defined in header
<experimental/map> |
|
| Erases all elements satisfying a predicate from a std::map (function template) |
|
| Erases all elements satisfying a predicate from a std::multimap (function template) |
|
|
Defined in header
<experimental/set> |
|
| Erases all elements satisfying a predicate from a std::set (function template) |
|
| Erases all elements satisfying a predicate from a std::multiset (function template) |
|
|
Defined in header
<experimental/unordered_map> |
|
| Erases all elements satisfying a predicate from a std::unordered_map (function template) |
|
| Erases all elements satisfying a predicate from a std::unordered_multimap (function template) |
|
|
Defined in header
<experimental/unordered_set> |
|
| Erases all elements satisfying a predicate from a std::unordered_set (function template) |
|
| Erases all elements satisfying a predicate from a std::unordered_multiset (function template) |
|
Source code information capture
|
Defined in header
<experimental/source_location> |
|
| A class representing information about the source code, such as file names, line numbers, and function names (class) |
|
std::array conversion
|
Defined in header
<experimental/array> |
|
| Creates a std::array object from a built-in array (function template) |
|