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