Я хочу инициализировать итератор (произвольного вида) с преемником другого итератора (того же типа). Следующий код работает с итераторами произвольного доступа, но не работает с прямыми или двунаправленными итераторами:
Iterator i = j + 1;
Простой обходной путь:
Iterator i = j;
++i;
Но это не работает как init-stament цикла for. Я мог бы использовать шаблон функции, подобный следующему:
template <typename Iterator>
Iterator succ(Iterator it)
{
return ++it;
}
и затем используйте его так:
Iterator i = succ(j);
Есть ли что-то подобное в STL или Boost, или есть еще лучшее решение, о котором я не знаю?