Expression | Return type | Assertion/note | Default | |
pre-/post-condition | ||||
X::pointer | T* | |||
X::const_pointer | X::pointer is convertible to X::const_pointer | pointer_traits<X::pointer>::rebind<const T> | ||
X::void_pointer Y::void_pointer | pointer_traits<X::pointer>::rebind<void> | |||
X::const_void_pointer Y::const_void_pointer | pointer_traits<X::pointer>::rebind<const void> | |||
X::value_type | Identical to T | |||
X::size_type | unsigned integer type | a type that can represent the size of the largest object in the allocation model | make_unsigned_t<X::difference_type> | |
X::difference_type | signed integer type | a type that can represent the difference between any two pointers
in the allocation model | pointer_traits<X::pointer>::difference_type | |
typename X::template rebind<U>::other | Y | See Note A, below. | ||
*p | T& | |||
*q | const T& | |||
p->m | type of T::m | Preconditions: (*p).m is well-defined. equivalent to (*p).m | ||
q->m | type of T::m | Preconditions: (*q).m is well-defined. equivalent to (*q).m | ||
static_cast<X::pointer>(w) | X::pointer | static_cast<X::pointer>(w) == p | ||
static_cast<X::const_pointer>(x) | X::const_pointer | static_cast< X::const_pointer>(x) == q | ||
pointer_traits<X::pointer>::pointer_to(r) | X::pointer | same as p | ||
a.allocate(n) | X::pointer | Memory is allocated for an array of n T
and such an object is created
but array elements are not constructed. | ||
a.allocate(n, y) | X::pointer | a.allocate(n) | ||
a.deallocate(p,n) | (not used) | |||
a.max_size() | X::size_type | the largest value that can meaningfully be passed to X::allocate() | numeric_limits<size_type>::max() / sizeof(value_type) | |
a1 == a2 | bool | |||
a1 != a2 | bool | same as !(a1 == a2) | ||
a == b | bool | same as a == Y::rebind<T>::other(b) | ||
a != b | bool | same as !(a == b) | ||
X u(a); X u = a; | Shall not exit via an exception. Postconditions: u == a | |||
X u(b); | Shall not exit via an exception. Postconditions: Y(u) == b, u == X(b) | |||
X u(std::move(a)); X u = std::move(a); | ||||
X u(std::move(b)); | ||||
a.construct(c, args) | (not used) | construct_at(c, std::forward<Args>(args)...) | ||
a.destroy(c) | (not used) | Effects: Destroys the object at c | destroy_at(c) | |
a.select_on_container_copy_construction() | X | return a; | ||
X::propagate_on_container_copy_assignment | Identical to or derived from true_type or false_type | false_type | ||
X::propagate_on_container_move_assignment | Identical to or derived from true_type or false_type | false_type | ||
X::propagate_on_- container_swap | Identical to or derived from true_type or false_type | false_type | ||
X::is_always_equal | Identical to or derived from true_type or false_type | true_type only if the expression a1 == a2 is guaranteed
to be true for any two (possibly const) values
a1, a2 of type X. | is_empty<X>::type |