isBidirectionalRange fails for unknown reasons

Jakob Ovrum via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Dec 16 18:47:09 PST 2015


On Wednesday, 16 December 2015 at 20:43:02 UTC, Jack Stouffer 
wrote:
> ...

You can also use return type covariance:

class ReferenceBidirectionalRange(T) : ReferenceForwardRange!T
{
     this(Range)(Range r) if (isInputRange!Range) { super(r); }
     final override @property typeof(this) save() { return new 
typeof(this)(_payload); }
     final @property ref T back(){ return _payload.back; }
     final void popBack(){ _payload.popBack(); }
}

ReferenceBidirectionalRange!T is a subtype of 
ReferenceForwardRange!T, so the override is legal.



More information about the Digitalmars-d-learn mailing list