Я хочу инициализировать итератор (произвольного типа) с преемником другого итератора (того же типа). Следующий код работает с итераторами произвольного доступа, но не работает с итераторами прямого или двунаправленного действия:
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, или есть еще лучшее решение, о котором я не знаю?