Utility library
C++ includes a variety of utility libraries that provide functionality ranging from bit-counting to partial function application. These libraries can be broadly divided into two groups:
- language support libraries, and
- general-purpose libraries.
Language support
Language support libraries provide classes and functions that interact closely with language features and support common language idioms.
Type support
Basic types (e.g. std::size_t, std::nullptr_t), RTTI (e.g. std::type_info), type traits (e.g. std::is_integral, std::rank)
Implementation properties
|
The header <version> supplies implementation-dependent information about the C++ standard library (such as the version number and release date). It also defines the library feature-test macros. |
(since C++20) |
Program utilities
Termination (e.g. std::abort, std::atexit), environment (e.g. std::system), signals (e.g. std::raise)
Dynamic memory management
Smart pointers (e.g. std::shared_ptr), allocators (e.g. std::allocator or std::pmr::memory_resource), C-style memory management (e.g. std::malloc)
Object access
|
Defined in header
<new> |
|
|
(C++17)
|
pointer optimization barrier (function template) |
Error handling
Exceptions (e.g. std::exception, std::terminate), assertions (e.g. assert)
Source code information capture
|
Defined in header
<source_location> |
|
|
(C++20)
|
A class representing information about the source code, such as file names, line numbers, and function names (class) |
Initializer lists
|
Defined in header
<initializer_list> |
|
|
(C++11)
|
creates a temporary array in list-initialization and then references it (class template) |
Three-way comparison
|
Defined in header
<compare> |
|
| specifies that operator <=> produces consistent result on given types (concept) |
|
|
(C++20)
|
the result type of 3-way comparison that supports all 6 operators, is not substitutable, and allows incomparable values (class) |
|
(C++20)
|
the result type of 3-way comparison that supports all 6 operators and is not substitutable (class) |
|
(C++20)
|
the result type of 3-way comparison that supports all 6 operators and is substitutable (class) |
| named comparison functions (function) |
|
|
(C++20)
|
function object implementing x <=> y (class) |
|
(C++20)
|
obtains the result type of the three-way comparison operator <=> on given types (class template) |
|
(C++20)
|
the strongest comparison category to which all of the given types can be converted (class template) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::strong_ordering(customization point object) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::weak_ordering(customization point object) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::partial_ordering(customization point object) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::strong_ordering, even if operator<=> is unavailable(customization point object) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::weak_ordering, even if operator<=> is unavailable(customization point object) |
|
(C++20)
|
performs 3-way comparison and produces a result of type std::partial_ordering, even if operator<=> is unavailable(customization point object) |
Coroutine support
|
Types for coroutine support, e.g. std::coroutine_traits, std::coroutine_handle. |
(since C++20) |
Variadic functions
Support for functions that take an arbitrary number of parameters (via e.g. va_start, va_arg, va_end)
General-purpose utilities
Swap and type operations
|
Defined in header
<utility> |
|
| swaps the values of two objects (function template) |
|
|
(C++14)
|
replaces the argument with a new value and returns its previous value (function template) |
|
(C++11)
|
forwards a function argument (function template) |
|
(C++11)
|
obtains an rvalue reference (function template) |
|
(C++11)
|
obtains an rvalue reference if the move constructor does not throw (function template) |
|
(C++17)
|
obtains a reference to const to its argument (function template) |
|
(C++11)
|
obtains a reference to its argument for use in unevaluated context (function template) |
|
(C++23)
|
converts an enumeration to its underlying type (function template) |
|
Defined in header
<concepts> |
|
|
(C++20)
|
swaps the values of two objects (customization point object) |
Integer comparison functions
|
Defined in header
<utility> |
|
| compares two integer values without value change caused by conversion (function template) |
|
|
(C++20)
|
checks if an integer value is in the range of a given integer type (function template) |
Relational operators
|
Defined in header
<utility> |
|
|
Defined in namespace
std::rel_ops |
|
|
(deprecated in C++20)
|
automatically generates comparison operators based on user-defined operator== and operator< (function template) |
Pairs and tuples
|
Defined in header
<utility> |
|
| implements binary tuple, i.e. a pair of values (class template) |
|
|
(C++11)
|
tag type used to select correct function overload for piecewise construction (class) |
|
(C++11)
|
an object of type piecewise_construct_t used to disambiguate functions for piecewise construction(constant) |
|
(C++14)
|
implements compile-time sequence of integers (class template) |
|
Defined in header
<tuple> |
|
|
(C++11)
|
implements fixed size container, which holds elements of possibly different types (class template) |
|
(C++17)
|
calls a function with a tuple of arguments (function template) |
|
(C++17)
|
Construct an object with a tuple of arguments (function template) |
|
Defined in header
<tuple> |
|
|
Defined in header
<utility> |
|
|
Defined in header
<array> |
|
|
Defined in header
<ranges> |
|
|
(C++11)
|
obtains the number of elements of a tuple-like type (class template) |
|
(C++11)
|
obtains the element types of a tuple-like type (class template) |
Optional, variant and any
|
Defined in header
<optional> |
|
|
(C++17)
|
a wrapper that may or may not hold an object (class template) |
|
Defined in header
<variant> |
|
|
(C++17)
|
a type-safe discriminated union (class template) |
|
Defined in header
<any> |
|
|
(C++17)
|
Objects that hold instances of any CopyConstructible type. (class) |
|
Defined in header
<utility> |
|
| in-place construction tag (class template) |
|
Bitset
|
Defined in header
<bitset> |
|
| implements constant length bit array (class template) |
|
Function objects
Partial function application (e.g. std::bind) and related utilities: utilities for binding such as std::ref and std::placeholders, polymorphic function wrappers: std::function, predefined functors (e.g. std::plus, std::equal_to), method to function converters std::mem_fn.
Hash support
|
Defined in header
<functional> |
|
|
(C++11)
|
hash function object (class template) |
Date and time
Time tracking (e.g. std::chrono::time_point, std::chrono::duration), C-style date and time (e.g. std::time, std::clock)
Elementary string conversions
In addition to sophisticated locale-dependent parsers and formatters provided by the C++ I/O library, the C I/O library, C++ string converters, and C string converters, the header <charconv> provides light-weight, locale-independent, non-allocating, non-throwing parsers and formatters for arithmetic types.
|
Defined in header
<charconv> |
|
|
(C++17)
|
converts an integer or floating-point value to a character sequence (function) |
|
(C++17)
|
converts a character sequence to an integer or floating-point value (function) |
|
(C++17)
|
specifies formatting for std::to_chars and std::from_chars (enum) |
Formatting library
Facilities for type-safe string formatting.
|
Defined in header
<format> |
|
|
(C++20)
|
stores formatted representation of the arguments in a new string (function template) |
|
(C++20)
|
writes out formatted representation of its arguments through an output iterator (function template) |
|
(C++20)
|
writes out formatted representation of its arguments through an output iterator, not exceeding specified size (function template) |
|
(C++20)
|
determines the number of characters necessary to store the formatted representation of its arguments (function template) |
|
(C++20)
|
non-template variant of std::format using type-erased argument representation (function) |
|
(C++20)
|
non-template variant of std::format_to using type-erased argument representation (function template) |
|
(C++20)
|
class template that defines formatting rules for a given type (class template) |
|
(C++20)
|
exception type thrown on formatting errors (class) |
Stacktrace
|
Defined in header
<stacktrace> |
|
|
(C++23)
|
representation of an evaluation in a stacktrace (class) |
|
(C++23)
|
approximate representation of an invocation sequence consists of stacktrace entries (class template) |