struct S { int x; ~this() { import std.stdio; writeln("mutable ~this()"); x = 1; } } void main() { const(S) s1; immutable(S) s2; } Prints: mutable ~this() mutable ~this() This looks very wrong, although I cannot find a way to actually modify immutable memory with it... Is it a bug?