/*
 *  Constructors
 *
 */

template <class T, class A = allocator<T> > class vector {
public:
    // ...
    // constructors, etc.:

    explicit vector(const A& = A());
    explicit vector(size_type n, const T& val = T(), const A& = A());   // n copies of val
    template <class In>                                         // In must be an input iterator (_iter.oper_)
                vector(In first, In last, const A& = A());      // copy from [first:last[
    vector(const vector& x);

    ~vector();

    vector& operator=(const vector& x);

    template <class In>                             // In must be an input iterator (_iter.oper_)
                void assign(In first, In last);     // copy from [first:last[
    void assign(size_type n, const T& val);         // n copies of val

    // ...
};