Что было бы хорошей реализацией iota_n (отсутствует алгоритм из STL)

С C ++ 11 STL теперь имеетstd::iota функция (см.ссылка). В отличие отstd::fill_n, std::generate_n, здесь нетstd::iota_n, тем не мение. Что будет хорошей реализацией для этого? Прямой цикл (вариант 1) или делегированиеstd::generate_n с простым лямбда-выражением (вариант 2)?

Alternative 1)

template<class OutputIterator, class Size, class T>
OutputIterator iota_n(OutputIterator first, Size n, T value)
{
        while (n--)
                *first++ = value++;
        return first;
}

Alternative 2)

template<class OutputIterator, class Size, class T>
OutputIterator iota_n(OutputIterator first, Size n, T value)
{
        return std::generate_n(first, n, [&](){ return value++; });
}    

Будут ли обе альтернативы генерировать эквивалентный код с оптимизирующими компиляторами?

UPDATE: включил превосходную точку @Marc Mutz, чтобы также вернуть итератор в его пункт назначения. Это также какstd::generate_n&nbsp;обновлен в C ++ 11 по сравнению с C ++ 98.