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