On Friday, 17 August 2012 at 00:44:20 UTC, Chris Cain wrote:
Also, D's const is _not_ a guarantee that there are no mutable references to something. That'd be immutable.
And, by the way, I'd call this a bug (not sure if reported yet): int yourGlobalCounter; struct S { int*[] items; this(int i) { items = new int*[1]; items[0] = &yourGlobalCounter; yourGlobalCounter = i; } ref const(int*[]) getItems() const { ++yourGlobalCounter; return items; } } import std.stdio; void main() { immutable(S) s = immutable(S)(0); auto it = s.getItems(); writeln(*it[0]); s.getItems(); writeln(*it[0]); }