On 6/27/23 6:34 PM, Adam D Ruppe wrote:
On Tuesday, 27 June 2023 at 22:20:22 UTC, Chris Katko wrote:
pragma(msg, t.stringof); // does not see any new fields!
D's declarations are all order-independent, in theory those foreaches
are done simultaneously, so it is kinda a race condition.
In particular the practice of adding new members based on introspecting
other members is suspect. I've done it too, but I think it probably
would be better if we didn't allow this kind of stuff, or came up with a
sane way to do this.
This leads to all kinds of weird stuff. Like if you instantiate a
template with the current type being compiled, that template is locked
to that type *at that point in compilation*. Then you look at it outside
the type, and the value is already cached.
-Steve