преемник итератора

Я хочу инициализировать итератор (произвольного типа) с преемником другого итератора (того же типа). Следующий код работает с итераторами произвольного доступа, но не работает с итераторами прямого или двунаправленного действия:

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, или есть еще лучшее решение, о котором я не знаю?

7
задан Sebastian Mach 21 February 2013 в 12:05
поделиться