range and algorithm-related stuff

Sergey Gromov snake.scaly at gmail.com
Mon Jan 26 17:38:37 PST 2009


Sun, 25 Jan 2009 13:53:43 -0800, Andrei Alexandrescu wrote:

> Christopher Wright wrote:
>> Andrei Alexandrescu wrote:
>>> Sergey Gromov wrote:
>>>> Sat, 24 Jan 2009 17:09:07 -0800, Andrei Alexandrescu wrote:
>>>>
>>>>> I'm working on the new range stuff and the range-based algorithm. In 
>>>>> all likelihood, you all might be pleased with the results.
>>>>>
>>>>> I wanted to gauge opinions on a couple of issues. One is, should the 
>>>>> empty() member function for ranges be const? On the face of it it 
>>>>> should, but I don't want that to be a hindrance. I presume non-const 
>>>>> empty might be necessary sometimes, e.g. figuring out if a stream is 
>>>>> empty effectively means fetching an element off it.
>>>>
>>>> I have a hard time imagining a use for a const range.
>>>
>>> Read-only arrays for example.
>> 
>> A range is essentially an iterator. It has to change its internal state 
>> to move to the next element. So a const range will not allow you to 
>> iterate over the members of a const array. It will allow you to iterate 
>> over a single element, either once or an infinite number of times.
> 
> A range offering random access can give me any element without the range 
> actually changing.

This restricts you to algorithms working exclusively with random-access
ranges.  Any more generic algos won't work with const ranges.  How many
of those do you have?



More information about the Digitalmars-d mailing list