Здравствуйте, seego, Вы писали:
S>как создать template function для работы с любым forward_iterator?
Стандарт предъявляет к каждой категории итератора свои требования.
Достаточно придерживатся этих требований при реализации функции и всё.
Вот краткий список операций допустимых для Forward Iterators
*iter
iter->member
++iter
iter++
iter1 == iter2
iter1 != iter2
iter1 = iter2
А вот пример функции из STL которая работает с любыми Forward Iterators
template<class ForwardIterator, class T>
void fill(ForwardIterator first, ForwardIterator last, const T& value);
{
for (; first != last; ++first)
*first = value;
}