On Thursday, 10 May 2018 at 03:23:50 UTC, Mike Franklin wrote:
Consider the following code:

---
struct S
{
    // intentionally not `static`
    struct SS
    {
int y() { return x; } // Error: need `this` for `x` of type `int`
    }

    int x;
    SS ss;
}

void main()
{
    S s;
    s.ss.y();
}
---

If I change `return x;` to `return this.x;` then of course it emits the following error:

Error: no property `x` for type `SS`

My understanding is that `SS` should have a context pointer to an instance of `S`, but how do I navigate the members of `S` and `SS`. Is this a bug?

Thanks,
Mike

My understanding is that nested structs have an implicit context pointer to their containing scope.

Nesting with hidden context pointer is only for nested structs inside functions.
https://dlang.org/spec/struct.html#nested

This is a source a confusion unfortunately.

Reply via email to