Array implicit conversions subvert type system

Mike Capp mike.capp at gmail.com
Fri Nov 24 12:58:29 PST 2006


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");
}



More information about the Digitalmars-d mailing list