On Wednesday, 18 February 2015 at 13:59:43 UTC, Nordlöw wrote:
On Wednesday, 18 February 2015 at 13:53:17 UTC, Tobias Pankrath wrote:
All the data members except distMap have reference semantics.

I thought AAs had reference semantics.

Me too, but the indeed have value semantics. See for example:

unittest
{
    string[int] x;
    auto y = x;
    x[0] = "zero";
    assert(x != y);
}


This makes usage of storing internal state in Ranges bug-prone.


Isn't there some way to store an AA in reference wrapper?

This would simplify my .save member.

Because y does not alias x, it's a null pointer like AA. This class is clearly a reference type, but the assert holds as well.

class C { int i; }

void main()
{
        C c1;
        C c2 = c1;
        c1 = new C(12);
        assert(c1.i != c2.i);
}







Reply via email to