Generating unique identifiers at compile time
JG
someone at somewhere.com
Sun Jun 12 19:17:49 UTC 2022
On Sunday, 12 June 2022 at 18:45:27 UTC, Paul Backus wrote:
> On Thursday, 9 June 2022 at 21:20:27 UTC, JG wrote:
>> [...]
> [...]
>> [...]
>
> Here's a `gensym` implementation I came up with a while back:
>
> ```d
> enum gensym = q{"_gensym" ~ __traits(identifier,
> {})["__lambda".length .. $]};
>
> // Works multiple times on the same line
> pragma(msg, mixin(gensym)); pragma(msg, mixin(gensym));
> ```
>
> This takes advantage of the fact that the compiler generates a
> unique identifier for every lambda function it encounters.
> While you can't actually use those identifiers in your code,
> they are visible in error messages and can be accessed via
> `__traits(identifier)`.
Hi,
This is great thanks.
More information about the Digitalmars-d-learn
mailing list