Fix std::vector constructor overload resolution
Fix std::vector constructor overload resolution

PROBLEM

std::vector has a constructor that takes two iterator parameters, one
to the beginning and one to the end of a sequence of values, and
constructs a vector from the elements in the range.

Previously this constructor was suitable for overload resolution for
any two arguments of the same type, regardless of whether they were
actually usable as iterators. This would cause compile failures in
cases like this, for example:

  std::vector<int> vec(1, 2);

This should construct a vector with one element being the value 2. Our
implementation would attempt to treat the values 1 and 2 as iterators
and fail the compilation.

SOLUTION

This commit adds qualifications to the signature of the iterator
constructor, so that it will only be available for overload resolution
when the type of the arguments supports an iterator interface.

Change-Id: I60aea2f9918529b4af24b4abf7265cfde8aff2cc
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/124568
Reviewed-by: Roland Veloz <768fb49134ab823c765de70e7067d9f65f5d0a3e@us.ibm.com>
Tested-by: Jenkins Server <8e3f934e4c44875bc48d33da3ea13d93ba9a233f@us.ibm.com>
Tested-by: FSP CI Jenkins <aa9e4d9ac7cd25905e9c0dd36d4150516e73dd86@us.ibm.com>
Tested-by: Jenkins OP Build CI <e610bd72261d3c0a48f1e8ae36832ab00774d426@us.ibm.com>
Tested-by: Jenkins OP HW <0eb0fff262f74a65a832afbcc7b153e391c9a3fd@us.ibm.com>
Tested-by: Jenkins Combined Simics CI <8312af3886dfc9bb930f549023677220805b137e@us.ibm.com>
Tested-by: Hostboot CI <52521565bd8ea18a2b112942dce4f4220a97c2c8@us.ibm.com>
Reviewed-by: Deborah L McLemore <1938e6bc52a6fb400ff401d42bc5360c2c7aaa30@us.ibm.com>
Reviewed-by: Nicholas E Bofferding <fb8db48116bc8a69e29dd8cdb037246f232f4af5@us.ibm.com>

open-power/hostboot,open-power/hostboot,open-power/hostboot,open-power/hostboot,open-power/hostboot