This code shouldn't work:
------------------------------
import std.stdio;
struct ID
{
immutable int value;
}
struct Data
{
ID id;
}
void main()
{
Data data = Data(ID(1));
immutable int* val = &data.id.value;
writeln(*val); // 1
data = Data(ID(2)); // <- This line shouldn't be allowed.
writeln(*val); // 2
}
Comment #1 by smjg — 2010-12-07T04:07:26Z
There are several bugs that match the summary line you had. See issue 2573.
This is closely related to issue 2625. The solution is given in issue 2625 comment 4.