Subject: Re: [boost] Review Request : Boost.Range Extension
From: Michel Morin (mimomorin_at_[hidden])
Date: 2012-05-30 18:27:57


Akira Takahashi wrote:
>> [Infinite ranges]
>> Boost.Iterator now has function_input_iterator which can be used
>> to represent infinite ranges. IMHO, function_input_iterator is not so
>> flexible and its implementation has some flaw:
>>   https://svn.boost.org/trac/boost/ticket/5825
>> Oven's infinite range does not have such an issue, right?
>
> iteration() function is OvenToBoost's infinite range.
> This function's main purpose is makes number of sequence. But,
> iteration() function can apply many case with other Range adaptors.
> Past-the-end condition can specified taken/taken_while (and other adaptors).
<snip>

Thanks for the examples.
I would like `nonstop` and `generation` as well to be included in
OvenToBoost!

One question about implementation of `single`:

  template <class T>
  inline iterator_range<const T*> single(const T& x)
  {
      return make_iterator_range(boost::addressof(x), boost::addressof(x) + 1);
  }

I'm concerned about taking one-past-the-end pointer of non-array object.
Is this guaranteed to work?
If so, could you tell me which part of the Standard guarantee it?

Regards,
Michel