stringof and mixins when the types aren't available

David Nadlinger code at klickverbot.at
Sun Jun 16 17:27:05 PDT 2013


On Monday, 17 June 2013 at 00:10:58 UTC, Adam D. Ruppe wrote:
> Consider the following:
>
> module a;
> T getInit(T)() {
>    return mixin(T.stringof ~ ".init");
> }
>
> […]
>
> Any ideas to solve this, or do you have any techniques for 
> string mixins you'd like to share for general knowledge?

The fix is simple: Replace `mixin(T.stringof ~ ".init")` by 
`return mixin("T.init")`. I am not mocking you here, using 
.stringof for codegen is amost always a bug, and it is usually 
possible to rewrite the code in such a way that just 
template-local names are used.

I've done quite a bit of this kind of code for Thrift, so if you 
post a more concrete example that is giving you trouble, I might 
be able to help.

David


More information about the Digitalmars-d mailing list