Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/utility"

From cppreference.com
< cpp
(Coroutine support: + (completion might be required))
m (add blank lines to facilitate comparing when translating)
Line 8: Line 8:
  
 
==Language support==
 
==Language support==
 
 
Language support libraries provide classes and functions that interact closely with language features and support common language idioms.
 
Language support libraries provide classes and functions that interact closely with language features and support common language idioms.
  
 
===[[cpp/types|Type support]]===
 
===[[cpp/types|Type support]]===
 
 
Basic types (e.g. {{lc|std::size_t}}, {{lc|std::nullptr_t}}), RTTI (e.g. {{lc|std::type_info}}), type traits (e.g. {{lc|std::is_integral}}, {{lc|std::rank}})
 
Basic types (e.g. {{lc|std::size_t}}, {{lc|std::nullptr_t}}), RTTI (e.g. {{lc|std::type_info}}), type traits (e.g. {{lc|std::is_integral}}, {{lc|std::rank}})
  

Revision as of 10:37, 11 September 2020

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 

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.

Contents

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

Error handling

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

Source code information capture

Defined in header <source_location>
a class representing information about the source code, such as file names, line numbers, and function names
(class) [edit]

Initializer lists

Defined in header <initializer_list>
references a temporary array created in list-initialization
(class template) [edit]

Three-way comparison

Defined in header <compare>
specifies that operator <=> produces consistent result on given types
(concept) [edit]
the result type of 3-way comparison that supports all 6 operators, is not substitutable, and allows incomparable values
(class) [edit]
the result type of 3-way comparison that supports all 6 operators and is not substitutable
(class) [edit]
the result type of 3-way comparison that supports all 6 operators and is substitutable
(class) [edit]
named comparison functions
(function) [edit]
constrained function object implementing x <=> y
(class) [edit]
obtains the result type of the three-way comparison operator <=> on given types
(class template) [edit]
the strongest comparison category to which all of the given types can be converted
(class template) [edit]
performs 3-way comparison and produces a result of type std::strong_ordering
(customization point object)[edit]
performs 3-way comparison and produces a result of type std::weak_ordering
(customization point object)[edit]
performs 3-way comparison and produces a result of type std::partial_ordering
(customization point object)[edit]
performs 3-way comparison and produces a result of type std::strong_ordering, even if operator<=> is unavailable
(customization point object)[edit]
performs 3-way comparison and produces a result of type std::weak_ordering, even if operator<=> is unavailable
(customization point object)[edit]
performs 3-way comparison and produces a result of type std::partial_ordering, even if operator<=> is unavailable
(customization point object)[edit]

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) [edit]
(C++14)
replaces the argument with a new value and returns its previous value
(function template) [edit]
(C++11)
forwards a function argument and use the type template argument to preserve its value category
(function template) [edit]
(C++11)
converts the argument to an xvalue
(function template) [edit]
converts the argument to an xvalue if the move constructor does not throw
(function template) [edit]
(C++17)
obtains a reference to const to its argument
(function template) [edit]
(C++11)
obtains a reference to an object of the template type argument for use in an unevaluated context
(function template) [edit]
Defined in header <concepts>
swaps the values of two objects
(customization point object)[edit]

Integer comparison functions

Defined in header <utility>
compares two integer values, ensuring that signed negative numbers are less than unsigned numbers
(function template) [edit]
(C++20)
checks if an integer value is in the range of a given integer type
(function template) [edit]

Relational operators

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

Pairs and tuples

Defined in header <utility>
implements binary tuple, i.e. a pair of values
(class template) [edit]
tag type used to select correct function overload for piecewise construction
(class) [edit]
piecewise construction tag
(tag)[edit]
implements compile-time sequence of integers
(class template) [edit]
Defined in header <tuple>
(C++11)
implements fixed size container, which holds elements of possibly different types
(class template) [edit]
(C++17)
calls a function with a tuple of arguments
(function template) [edit]
construct an object with a tuple of arguments
(function template) [edit]

Optional, variant and any

Defined in header <optional>
(C++17)
a wrapper that may or may not hold an object
(class template) [edit]
 
Defined in header <variant>
(C++17)
a type-safe discriminated union
(class template) [edit]
 
Defined in header <any>
(C++17)
objects that hold instances of any CopyConstructible type
(class) [edit]
 
Defined in header <utility>
in-place construction tag
(tag)[edit]

Bitset

Defined in header <bitset>
implements constant length bit array
(class template) [edit]

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

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) [edit]
converts a character sequence to an integer or floating-point value
(function) [edit]
specifies formatting for std::to_chars and std::from_chars
(enum) [edit]

Formatting library

Facilities for type-safe string formatting, e.g. std::format, std::format_to.

(since C++20)