On Thursday, 31 January 2019 at 21:57:21 UTC, Steven Schveighoffer wrote:
[snip]

That being said, you can look at the fact that most people don't even know about this problem, even seasoned veterans, as a sign that it's really not a big problem.


The way you put it makes it sound like a bug...

I don't know if it helps, but below compiles without error.

struct Foo
{
   private int _x;
   int* x() { return &_x; }
}

struct Bar
{
   private Foo _y;
   Foo* y() { return &_y; }
   void y(Foo foo) { _y = foo; }
}

void main() {
    Foo a = Foo(1);
    assert(*a.x == 1);
    *a.x *= 2;
    assert(*a.x == 2);

    Bar b;
    b.y = Foo(1);
    assert(*b.y.x == 1);
    *b.y.x *= 2;
    assert(*b.y.x == 2);
}

Reply via email to