| Thread overview | |||||
|---|---|---|---|---|---|
|
May 11, 2015 Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
|---|---|---|---|---|
| ||||
struct MyStruct {
this(int a, int b) {
this.a = a;
this.b = b;
}
immutable int a;
immutable int b;
}
void main(string[] args) {
MyStruct[] arr = new MyStruct[3];
arr[0] = MyStruct(5, 7);
}
Why does it happen?
| ||||
May 11, 2015 Re: Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
|---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On Monday, 11 May 2015 at 13:37:27 UTC, ref2401 wrote:
> Why does it happen?
You'd just be writing to the immutable memory through a different name.
Consider if someone took a reference to one of those immutable ints, expecting it to never change. Then you wrote a new struct over the same location with different values. Then the ints pointed to by that reference suddenly change, despite allegedly being immutable!
Assigning a struct in-place is the same as assigning all its members.
| |||
May 11, 2015 Re: Error: cannot modify struct arr[0] MyStruct with immutable members | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Monday, 11 May 2015 at 13:44:14 UTC, Adam D. Ruppe wrote:
> On Monday, 11 May 2015 at 13:37:27 UTC, ref2401 wrote:
>> Why does it happen?
>
> You'd just be writing to the immutable memory through a different name.
>
> Consider if someone took a reference to one of those immutable ints, expecting it to never change. Then you wrote a new struct over the same location with different values. Then the ints pointed to by that reference suddenly change, despite allegedly being immutable!
>
> Assigning a struct in-place is the same as assigning all its members.
Got it. Thank you.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply