basic_string(const E *s, const A& al = A());
basic_string(const E *s, size_type n, const A& al = A());
basic_string(const basic_string& rhs);
basic_string(const basic_string& rhs, size_type pos, size_type n,
const A& al = A());
basic_string(size_type n, E c, const A& al = A());
explicit basic_string(const A& al = A());
basic_string(const_iterator first, const_iterator last,
const A& al = A());
Each constructor stores the allocator object al (or, for the copy constructor, x.get_allocator()) in
allocator and initializes the controlled sequence to a copy of the operand sequence specified by the remaining
operands. The explicit constructor specifies an empty initial controlled sequence.
In this implementation, if a translator does not support member template functions, the template:
template <class InIt>
basic_string(InIt first, InIt last, const A& al = A());
is replaced by:
basic_string(const_iterator first, const_iterator last,
const A& al = A());