what if return returned subclasses
Stefan Koch
uplink.coder at googlemail.com
Wed Oct 20 23:48:57 UTC 2021
On Wednesday, 20 October 2021 at 22:42:43 UTC, Adam D Ruppe wrote:
> ok consider this:
>
> Object identity(return Object o) { return o; }
>
>
> Subclass s = identity(new Subclass());
>
>
> That is, it is converted to the base class before passed to the
> function, but since it is marked `return` anyway, the compiler
> knows it is the same instance, so the static type passed in is
> retained in the return value. So it is kinda like type erased
> but then repainted back on.
>
> Would this break anything? There's a few OOP patterns that
> might be made a lil nicer if this just worked.
that creates a polymorphic expression.
In other words I'd be the same as
T identity(T : Object) { return o; }
I am assuming you intend for this to not create new functions
open being instantiated.
That would work in this simple case but as soon as this is used
in compositional ways. It will most likely break.
More information about the Digitalmars-d
mailing list