On 3/4/11 2:55 AM, spir wrote:
Unfortunately, this is not possible for structs (the 'alias this' hack is not subtyping (*), it's plain delegation instead).
Subtyping means many things to many people. 'alias this' is "coercive subtyping" by a commonly-accepted definition.
The absence of struct subtyping is a big drawback. Why is it so? (**)
What would be the sketch of an alternative design?
Denis (*) There is no common supertype, so one cannot have a func or collection accept both the original type and one or more customized types. And indeed there is no method dispatch.
If a type A uses alias this to subtype type B, the relationship is A <: B. Indeed there is no method dispatch, but such is not needed to discuss subtyping.
(**) Some OO languages have struct-like types (stack-allocated, value-semantics) *with* subtyping. See eg Oberon for a wonderful example.
If you could point a link to such a treatment that doesn't require absorbing most of Oberon, that would be great. Thanks!
Andrei