Am 14.10.2013 13:35, schrieb Jack Applegame:
Why this doesn't compile?

http://dpaste.dzfl.pl/21ef5b04

class Foo {}

struct Bar1 {
     const(Foo[]) member;
}

struct Bar2 {
     const Foo member;
}

void main() {
     const Bar1 bar1;
     const Bar2 bar2;
     Bar1 b1 = bar1; // ok
     Bar2 b2 = bar2; // cannot implicitly convert expression (bar2) of
type const(Bar2) to Bar2
}

Because in D const is transitive. That means if a reference is const the object it points to is also const. And everything that object points to is const, and so on.

The line "Bar2 b2 = bar2;" would remove const from "member" which does not happen because const is not convertible to mutable implicitly.

Kind Regards
Benjamin Thaut

Reply via email to