В вашем случае вставка соответствует шаблону лучше, чем шаблону, если ваши параметры int
и int
.
Стандарт требует, чтобы он работал как если бы не шаблон был выбран в любом случае!
- функции-члены в формах:
template <class InputIterator> // such as insert()<br>
rt fx1(iterator p, InputIterator f, InputIterator l);
template <class InputIterator> // such as append(), assign()<br>
rt fx2(InputIterator f, InputIterator l);
template <class InputIterator> // such as replace()<br>
rt fx3(iterator i1, iteraror i2, InputIterator f, InputIterator l);
должен иметь такой же эффект соответственно, как:
fx1(p,
static_cast<typename X::size_type>(f),
static_cast<typename X::value_type>(l));
fx2(static_cast<typename X::size_type>(f),
static_cast<typename X::value_type>(l));
fx3(i1, i2,
static_cast<typename X::size_type>(f),
static_cast<typename X::value_type>(l));
, если InputIterator
- целочисленный тип.
Так что должна быть некоторая мета-магия, чтобы решить это.
Если вы измените свой вызов на someVector.insert(someVector.begin(), 10u, 90);
, не шаблон будет может быть лучшим соответствием, в зависимости от того, что size_type
.