• Henry Weller's avatar
    List: Reinstated construction from two iterators and added construction from an initializer list · d01eb45c
    Henry Weller authored
    Until C++ supports 'concepts' the only way to support construction from
    two iterators is to provide a constructor of the form:
            template<class InputIterator>
            List(InputIterator first, InputIterator last);
    which for some types conflicts with
            //- Construct with given size and value for all elements
            List(const label, const T&);
    e.g. to construct a list of 5 scalars initialized to 0:
        List<scalar> sl(5, 0);
    causes a conflict because the initialization type is 'int' rather than
    'scalar'.  This conflict may be resolved by specifying the type of the
    initialization value:
        List<scalar> sl(5, scalar(0));
    The new initializer list contructor provides a convenient and efficient alternative
    to using 'IStringStream' to provide an initial list of values:
        List<vector> list4(IStringStream("((0 1 2) (3 4 5) (6 7 8))")());
        List<vector> list4
            vector(0, 1, 2),
            vector(3, 4, 5),
            vector(6, 7, 8)