
I will repost my question. I suppose that range_detail can not be used by the user, so how the user can declare the variable returned by irange?
iterator_range< ??? > lower_case = irange(0,10);
Should I use Boost.Typeof?
Ah I see that your question was implied by the < ??? >. There were many questions and it was not obvious that this wasn't just a place holder. I do see your point now. I've been using irange using type deduction, but this would definitely be better if the return type were public. I was trying to avoid adding iterator public types to the range library.
What about defining a interger_range template class such that 'interger_range <T>' is equivalent of 'iterator_range< range_detail::integer_iterator<T> >', so the user can declare it as
integer_range< int > lower_case = irange(0,10);
Yes, this looks like the best solution. I shall make this change as soon as I possibly can get to a computer.
Best, Vicente
Thanks for your persistence. This will definitely improve the library. Regards, Neil Groves