<algorithm> | <forward_list> | <mutex> | <stacktrace> |
<any> | <fstream> | <new> | <stdexcept> |
<array> | <functional> | <numbers> | <stdfloat> |
<atomic> | <future> | <numeric> | <stop_token> |
<barrier> | <generator> | <optional> | <streambuf> |
<bit> | <hazard_pointer> | <ostream> | <string> |
<bitset> | <initializer_list> | <print> | <string_view> |
<charconv> | <inplace_vector> | <queue> | <syncstream> |
<chrono> | <iomanip> | <random> | <system_error> |
<compare> | <ios> | <ranges> | <text_encoding> |
<complex> | <iosfwd> | <ratio> | <thread> |
<concepts> | <iostream> | <rcu> | <tuple> |
<condition_variable> | <istream> | <regex> | <type_traits> |
<coroutine> | <iterator> | <scoped_allocator> | <typeindex> |
<debugging> | <latch> | <semaphore> | <typeinfo> |
<deque> | <limits> | <set> | <unordered_map> |
<exception> | <linalg> | <shared_mutex> | <unordered_set> |
<execution> | <list> | <simd> | <utility> |
<expected> | <locale> | <source_location> | <valarray> |
<filesystem> | <map> | <span> | <variant> |
<flat_map> | <mdspan> | <spanstream> | <vector> |
<flat_set> | <memory> | <sstream> | <version> |
<format> | <memory_resource> | <stack> |
<cassert> | <cfenv> | <climits> | <csetjmp> | <cstddef> | <cstdlib> | <cuchar> |
<cctype> | <cfloat> | <clocale> | <csignal> | <cstdint> | <cstring> | <cwchar> |
<cerrno> | <cinttypes> | <cmath> | <cstdarg> | <cstdio> | <ctime> | <cwctype> |
abort_handler_s | mbstowcs_s | strncat_s | vswscanf_s |
asctime_s | memcpy_s | strncpy_s | vwprintf_s |
bsearch_s | memmove_s | strtok_s | vwscanf_s |
constraint_handler_t | memset_s | swprintf_s | wcrtomb_s |
ctime_s | printf_s | swscanf_s | wcscat_s |
errno_t | qsort_s | tmpfile_s | wcscpy_s |
fopen_s | RSIZE_MAX | TMP_MAX_S | wcsncat_s |
fprintf_s | rsize_t | tmpnam_s | wcsncpy_s |
freopen_s | scanf_s | vfprintf_s | wcsnlen_s |
fscanf_s | set_constraint_handler_s | vfscanf_s | wcsrtombs_s |
fwprintf_s | snprintf_s | vfwprintf_s | wcstok_s |
fwscanf_s | snwprintf_s | vfwscanf_s | wcstombs_s |
getenv_s | sprintf_s | vprintf_s | wctomb_s |
gets_s | sscanf_s | vscanf_s | wmemcpy_s |
gmtime_s | strcat_s | vsnprintf_s | wmemmove_s |
ignore_handler_s | strcpy_s | vsnwprintf_s | wprintf_s |
localtime_s | strerrorlen_s | vsprintf_s | wscanf_s |
L_tmpnam_s | strerror_s | vsscanf_s | |
mbsrtowcs_s | strlen_s | vswprintf_s |
Subclause | Header | |
Common definitions | <cstddef> | |
C standard library | <cstdlib> | |
Implementation properties | <cfloat>, <climits>, <limits>, | |
<version> | ||
Integer types | <cstdint> | |
Dynamic memory management | <new> | |
Type identification | <typeinfo> | |
Source location | <source_location> | |
Exception handling | <exception> | |
Initializer lists | <initializer_list> | |
Comparisons | <compare> | |
Coroutines support | <coroutine> | |
Other runtime support | <cstdarg> | |
Concepts library | <concepts> | |
Error numbers | <cerrno> | |
System error support | <system_error> | |
Debugging | <debugging> | |
Memory | <memory> | |
Type traits | <type_traits> | |
Compile-time rational arithmetic | <ratio> | |
Utility components | <utility> | |
Tuples | <tuple> | |
Optional objects | <optional> | |
Variants | <variant> | |
Expected objects | <expected> | |
Function objects | <functional> | |
Bit manipulation | <bit> | |
Class template array | <array> | |
Class template inplace_vector | <inplace_vector> | |
Contiguous access | <span> | |
Multidimensional access | <mdspan> | |
Iterators library | <iterator> | |
Ranges library | <ranges> | |
Algorithms library | <algorithm>, <numeric> | |
String view classes | <string_view> | |
String classes | <string> | |
Null-terminated sequence utilities | <cstring>, <cwchar> | |
Primitive numeric conversions | <charconv> | |
Mathematical functions for floating-point types | <cmath> | |
Atomics | <atomic> | |
Expression | Return type | Requirement |
a == b | decltype(a == b) models boolean-testable |
Expression | Return type | Requirement |
a < b | decltype(a < b) models boolean-testable | < is a strict weak ordering relation ([alg.sorting]) |
Expression | Post-condition |
T u = rv; | u is equivalent to the value of rv before the construction |
T(rv) | T(rv) is equivalent to the value of rv before the construction |
Expression | Post-condition |
T u = v; | the value of v is unchanged and is equivalent to u |
T(v) | the value of v is unchanged and is equivalent to T(v) |
Expression | Return type | Return value | Post-condition |
t = rv | T& | t | If t and rv do not refer to the same object,
t is equivalent to the value of rv before the assignment |
Expression | Return type | Return value | Post-condition |
t = v | T& | t | t is equivalent to v, the value of v is unchanged |
Expression | Post-condition |
u.~T() | All resources owned by u are reclaimed, no exception is propagated. |
[Note 3: Array types and non-object types are not Cpp17Destructible. β end note] |
Expression | Return type | Operational semantics |
P u(np); | Postconditions: u == nullptr | |
P u = np; | ||
P(np) | Postconditions: P(np) == nullptr | |
t = np | P& | Postconditions: t == nullptr |
a != b | decltype(a != b) models boolean-testable | !(a == b) |
a == np | a == P() | |
np == a | ||
a != np | !(a == np) | |
np != a |
Expression | Return type | Requirement |
h(k) | size_t | |
h(u) | size_t | Shall not modify u. |
typename X::pointer
typename X::const_pointer
typename X::void_pointer
typename Y::void_pointer
typename X::const_void_pointer
typename Y::const_void_pointer
typename X::value_type
typename X::size_type
typename X::difference_type
typename X::rebind<U>::other
*p
*q
p->m
q->m
static_cast<XX::pointer>(w)
static_cast<XX::const_pointer>(x)
pointer_traits<XX::pointer>::pointer_to(r)
a.allocate(n)
a.allocate(n, y)
a.allocate_at_least(n)
a.deallocate(p, n)
a.max_size()
a1 == a2
a1 != a2
a == b
a != b
X u(a);
X u = a;
X u(b);
X u(std::move(a));
X u = std::move(a);
X u(std::move(b));
a.construct(c, args...)
a.destroy(c)
a.select_on_container_copy_construction()
typename X::propagate_on_container_copy_assignment
typename X::propagate_on_container_move_assignment
typename X::propagate_on_container_swap
typename X::is_always_equal