Given an allocator type 
A
and given a container type 
X having a 
value_type identical to 
T
and an 
allocator_type identical to 
allocator_traits<A>::rebind_alloc<T>
and given an lvalue 
m of type 
A,
a pointer 
p of type 
T*,
an expression 
v that denotes
an lvalue of type 
T or 
const T or
an rvalue of type 
const T,
and an rvalue 
rv of type 
T,
the following terms are defined
.If X
is not allocator-aware or is a specialization of basic_string,
the terms below are defined as if A were
allocator<T> — no allocator object needs to be created
and user specializations of allocator<T> are not instantiated: