Utility library

< cpp

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.


[edit] Language support

Language support libraries provide classes and functions that interact closely with language features and support common language idioms.

[edit] 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)

[edit] Dynamic memory management

Smart pointers (e.g. std::shared_ptr), allocators (e.g. std::allocator), C-style memory management (e.g. std::malloc)

[edit] Error handling

Exceptions (e.g. std::exception, std::logic_error), assertions (e.g. assert)

[edit] Initializer lists

allows the use of initializer list syntax to initialize non plain-old-data types
(class template) [edit]

[edit] Variadic functions

Support for functions that take an arbitrary number of parameters (via e.g. va_start, va_arg, va_end)

[edit] General-purpose utilities

[edit] Program utilities

Termination (e.g. std::abort, std::atexit), environment (e.g. std::system), signals (e.g. std::raise)

[edit] 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)

[edit] Bitset

implements constant length bit array
(class) [edit]

[edit] Function objects

Partial function application (e.g. std::bind), generic functions (e.g. std::function), predefined functors (e.g. std::plus, std::equal_to)

[edit] Pairs and tuples

implements binary tuple, i.e. a pair of values
(class template) [edit]
implements fixed size container, which holds elements of possibly different types
(class template) [edit]
tag type used to select correct function overload for piecewise construction
(class) [edit]
an object of type piecewise_construct_t used to disambiguate functions for piecewise construction
(constant) [edit]

[edit] Swap, forward and move

swaps the values of two objects
(function template) [edit]
forwards a function argument
(function template) [edit]
obtains an rvalue reference
(function template) [edit]
obtains an rvalue reference if the move constructor does not throw
(function template) [edit]
obtains the type of expression in unevaluated context
(function template) [edit]

[edit] Relational operators

Defined in namespace std::rel_ops
automatically generates comparison operators based on user-defined operator== and operator<
(function template) [edit]

[edit] Hash support

hash function object
(class template) [edit]