On 8/20/10 23:06 CDT, Shin Fujishiro wrote:
2.  The base interface is OutputRange!(E).  If I change the base
interface to OutputRange!(E...), then OutputRange!(uint, double) won't
be a subtype of OutputRange!(uint).  This is self-evidently ridiculous.
I could maybe make OutputRangeObject!(E...) inherit from
OutputRange!(E[0]), OutputRange!(E[1]), ..., OutputRange!(E[$ - 1]), but
other than nasty string mixins D doesn't provide a way to inherit from a
tuple of interfaces.

Oh, really?  That's bad.  I thought tuples could be used in the class
inheritance list.  IIRC something like the following also does not work
due to a deep inheritance bug:

interface OutputRange(E...) : OutputRange!(E[1 .. $]) {
     void put(E[0] e);
}

Then, maybe we should put off supporting this anyway...

Once Kenji's adapt() is in place, this problem can be considered solved. I suggest we move with variadic OutputRange.

Andrei
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to