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
