Почему вывод типа итератора терпит неудачу? [Дубликат]
На этот вопрос уже есть ответ здесь:
Почему нельзя получить аргумент шаблона, если он используется в качестве параметра шаблона для другого шаблона? 4 ответаПочему это не работает в C ++?
Почему я не могу ограничитьfoo
параметр дляstd::vector<T>::iterator
как это, и какой лучший обходной путь?
#include <vector>
template<class T>
void foo(typename std::vector<T>::iterator) { }
int main()
{
std::vector<int> v;
foo(v.end());
}
Ошибка:
In function ‘int main()’:
error: no matching function for call to ‘foo(std::vector<int>::iterator)’
note: candidate is:
note: template<class T> void foo(typename std::vector<T>::iterator)
note: template argument deduction/substitution failed:
note: couldn’t deduce template parameter ‘T’