Array implicit conversions subvert type system
Gregor Richards
Richards at codu.org
Fri Nov 24 16:39:17 PST 2006
Mike Capp wrote:
> Can't remember if I raised this before (it was loitering among the testcases
> from my last peek at D), but it's still true in 0.174. "Derived[] to Base[]"
> assignments really shouldn't happen without either a copy or an explit cast.
>
> ---
>
> class Fruit {};
> class Apple : Fruit {};
> class Orange : Fruit {};
>
> void main()
> {
> Apple[] apples;
> apples.length = 3;
> Fruit[] fruits = apples;
> Orange orange = new Orange;
> fruits[1] = orange;
>
> if (apples[1] == orange) printf("Oops.\n");
> }
No, purposeful, contrived subversion of the type system subverts the
type system.
- Gregor Richards
More information about the Digitalmars-d
mailing list