Issue with forward ranges which are reference types

Mehrdad wfunction at hotmail.com
Wed Aug 17 19:36:14 PDT 2011


On 8/17/2011 8:26 AM, Steven Schveighoffer wrote:
> On Wed, 17 Aug 2011 10:56:02 -0400, Mehrdad <wfunction at hotmail.com> 
> wrote:
>
>> On 8/17/2011 7:14 AM, Steven Schveighoffer wrote:
>>> Casting is actually the correct solution.
>>>
>>> if(auto irange = cast(InputRangeObject)collection)
>>> {
>>>    // now you can use irange
>>>    if(collection.empty) // success!
>>>    {
>>>       ...
>>>    }
>>> }
>> The correct solution? It doesn't even compile. (See my last post, 
>> which was after the one you replied to.)
>
> Oh, right, InputRangeObject is a template.  Sorry, I forgot about that 
> aspect.
>
> So actually, that isn't possible if you are returning Object, you need 
> to return the correct InputRange(T) type.
>
> (in this case InputRange!int)
>
> Another good reason to avoid class-based ranges :)
>
> -Steve
Er, if they aren't supported then please just remove them altogether... 
hasn't that been the philosophy so far?


More information about the Digitalmars-d mailing list