Почему они не добавили операторскую версию iota?

Функция шаблона iota была добавлена ​​в стандартную библиотеку для заполнения итератора диапазон с возрастающей последовательностью значений.

  template<typename ForwardIterator, typename Tp>
    void
    iota(ForwardIterator first, ForwardIterator last, Tp value)
    {
      for (; first != last; ++first)
        {
          *first = value;
          ++value;
        }
    }

Большинство других шаблонов в имеют версии, которые принимают указанные пользователем операторы. Имея это:

  template<typename ForwardIterator, typename Tp, typename Operator>
    void
    iota(ForwardIterator first, ForwardIterator last, Tp value, Operator op)
    {
      for (; first != last; ++first)
        {
          *first = value;
          op(value);
        }
    }

было бы удобно, если вы не хотите (или не можете) перегружать operator ++ () для Tp. Я считаю, что эту версию можно использовать более широко, чем версию оператора ++ () по умолчанию. <

6
задан Xeo 27 July 2012 в 11:49
поделиться