Issue with forward ranges which are reference types

Steven Schveighoffer schveiguy at yahoo.com
Wed Aug 17 08:26:45 PDT 2011


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


More information about the Digitalmars-d mailing list