On Thursday, 17 March 2016 at 09:57:37 UTC, Jeff Thompson wrote:
In the following code, I explicitly declare array as immutable.
But it compiles with the error shown below in the comment. The
array object is declared immutable, so how can the compiler say
it is a mutable object? In summary, how to pass an immutable
array to an immutable constructor?
class C {
int i;
this(immutable int[] array) immutable {
i = array[0];
}
}
void func() {
immutable int[] array = [1];
auto c = new C(array); // Error: immutable method C.this is
not callable using a mutable object
}
The error message isn't very good, but remove immutable from the
constructor and it works.
this(immutable int[] array) {