On Wednesday, 17 December 2014 at 01:14:36 UTC, aldanor wrote:
A partial solution would be something like this:

    mixin template makeProperty(T, string name, alias func) {
        enum p = makeUnnamedProperty!(T, func);
        mixin("enum %s = p;".format(name)); // or alias
    }

however now the parent namespace is polluted with "p", is there any way to hide it away and/or avoid it?

The polution isn't too bad. Mixed-in symbols are second class. A
symbol not from a mixin would win, and multiple mixed-in `p`s
would only conflict on use.

But if you want to avoid `p`, just do the substitution:

     mixin template makeProperty(T, string name, alias func) {
         mixin("enum %s = makeUnnamedProperty!(T,
func);".format(name)); // or alias
     }

Reply via email to