Namespaces
Variants
Actions

C++ standard libraries extensions, version 2

From cppreference.com
 
 
Experimental
Technical Specification
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)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics
 
 

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)
class type returned by detected_t on failure
(class)

[edit]A const-propagating wrapper for pointer-like objects

a const-propagating wrapper for pointer-like objects
(class template)

[edit]Non-owning pointers

Defined in header <experimental/memory>
a class representing a non-owning pointer
(class template)

[edit]std::array creation

Defined in header <experimental/array>
(library fundamentals TS v2)
creates a std::array object whose size and optionally element type are deduced from the arguments
(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)

[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>
generates a random integer in the specified range
(function template)[edit]
reseeds the per-thread random engine
(function)[edit]
Defined in header <experimental/algorithm>
selects n random elements from a sequence
(function template)
randomly re-orders elements in a range
(function template)

[edit]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)
__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)
__cpp_lib_experimental_source_location
a value of at least 201505 indicates that source_location is supported
(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>
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)[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>
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)
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)
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)

[edit]Source code information capture

a class representing information about the source code, such as file names, line numbers, and function names
(class)

[edit]std::array conversion

Defined in header <experimental/array>
creates a std::array object from a built-in array
(function template)[edit]
close