Hi!

I am a D user coming from java, rather than from C/C++ (although obviously also have some exposure to them), and thus apparently one of the few people here who likes OO (within reason, of course).

So while I appreciate the fact that D closely follows java's design, I wonder why there is no implicit inheritance for arrays (also the same applies to AAs):

```d
interface I {}
class C : I {}

void main() {
    I i;
    C c = null;
    i = c; // Works

    I[] ii;
    C[] cc = null;
// ii = cc; // Doesn't work: Error: cannot implicitly convert expression `cc` of type `C[]` to `I[]`
    ii = cast (I[]) cc; // Works, but why do I need to cast?
}
```

The equivalent java code compiles without issue:

```java
interface I {}
class C implements I {}

public class MyClass {
    public static void main(String args[]) {
        I i;
        C c = null;
        i = c; // Works

        I[] ii;
        C[] cc = null;
        ii = cc; // Also works
    }
}
```

Is this a conscious design decision (if so, why?), or just a leak of some implementation detail, but that could eventually be made to work?

Reply via email to