immutable array in constructor

Anonymouse via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Mar 17 03:04:53 PDT 2016


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) {


More information about the Digitalmars-d-learn mailing list