On Wednesday, 15 June 2022 at 12:26:40 UTC, cc wrote:

Why doesn't this work?  There is nothing in the foreach body.

```d
alias ALL = getSymbolsByUDA!(Def, XML);
pragma(msg, ALL.stringof);
```
reports `tuple(this.x, this.y)`.  Why is `this.` added?

I can only answer this partially, I guess `this` is just added because `getSymbolsByUDA` want an instance but `@XML` is only seen as a type. As instance, you need to write `@XML()` instead:

```d
class XML {
    static opCall() {
        return new XML();
    }
}

class Def {
        @XML() {
                int x;
                int y;
        }
        int z;

        this() {
                static foreach (sym; getSymbolsByUDA!(Def, XML)) {
                }
        }
}
```

Reply via email to