C++ standard libraries extensions, version 2
From cppreference.com
< cpp | experimental
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Experimental
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Library fundamentals v2
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:
Contents
[edit] The C++ detection idiom
Defined in header
<experimental/type_traits>
alias templates that detect whether a template-id is well-formed
(alias template)
(alias template)
[edit] A const-propagating wrapper for pointer-like objects
Defined in header
<experimental/propagate_const>
[edit] Non-owning pointers
Defined in header
<experimental/memory>
[edit] std::array
creation
Defined in header
<experimental/array>
(library fundamentals TS v2)
(function template) [edit]
[edit] 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)
(class template)
[edit] 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>
Defined in header
<experimental/algorithm>
[edit] Feature test macros
Defined in header
<experimental/type_traits>
__cpp_lib_experimental_logical_traits
(macro constant)
__cpp_lib_experimental_detect
(macro constant)
Defined in header
<experimental/propagate_const>
__cpp_lib_experimental_propagate_const
(macro constant)
Defined in header
<experimental/functional>
__cpp_lib_experimental_not_fn
(macro constant)
Defined in header
<experimental/memory>
__cpp_lib_experimental_observer_ptr
(macro constant)
Defined in header
<experimental/array>
__cpp_lib_experimental_make_array
(macro constant)
Defined in header
<experimental/iterator>
__cpp_lib_experimental_ostream_joiner
(macro constant)
Defined in header
<experimental/vector>
__cpp_lib_experimental_erase_if
(macro constant)
Defined in header
<experimental/numeric>
__cpp_lib_experimental_gcd_lcm
(macro constant)
Defined in header
<experimental/random>
__cpp_lib_experimental_randint
(macro constant)
Defined in header
<experimental/source_location>
__cpp_lib_experimental_source_location
(macro constant)
[edit] 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>
Defined in header
<experimental/type_traits>
Defined in header
<experimental/functional>
creates a function object that returns the complement of the result of the function object it holds
(function template) [edit]
(function template) [edit]
Defined in header
<experimental/numeric>
constexpr
function template returning the greatest common divisor of two integers (function template) [edit]
constexpr
function template returning the least common multiple of two integers (function template) [edit]
[edit] Merged into C++20
The following components of the library fundamentals v2 have been adopted into the C++20 standard.
[edit] Uniform container erasure
Defined in header
<experimental/string>
Defined in header
<experimental/deque>
Defined in header
<experimental/vector>
Defined in header
<experimental/forward_list>
Defined in header
<experimental/list>
Defined in header
<experimental/map>
Defined in header
<experimental/set>
Defined in header
<experimental/unordered_map>
Defined in header
<experimental/unordered_set>
[edit] 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)
(class)
[edit] std::array
conversion
Defined in header
<experimental/array>