Jonathan M Davis Wrote:

> Pelle's point still stands.
> 
> a[0] = new A();
> 
> would be legal code if you could assign a B[] to an A[], and since an A isn't 
> necessarily a B, that doesn't work at all. If the underlying type were 
> actually 
> A[], then it would be fine to use varying types derived from A, but since the 
> underlying type would actually be B[], it would break B[] to put anything in 
> it 
> which wasn't a B or a type derived from B.

Ok, then let us actually test that and show it is valid[1]:

class A {}
class B:A {}
 
void main() {
    A[] a = new B[6];
    a[0] = new A();
}

1. http://ideone.com/5sUZt

I have shown that what I am talking about is valid for Arrays (a container) but 
not templates. The issues of actually implementing it is not related to what I 
was replying to. I introduced it as a benefit to forgetting type information in 
"generics." I was then told "Having a container of one type should not be 
castable to a container of
another type." So I am pointing out we need to remove this feature from arrays 
right now!

Reply via email to