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]);
}


Reply via email to