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))")()); or List<vector> list4 { vector(0, 1, 2), vector(3, 4, 5), vector(6, 7, 8) };