Would something like this be possible at all? A hypothetical mixin template

    mixin template makeProperty(T, string name, alias func) {
        ...
    }

that could be called like this:

    makeProperty!(int, "foo", f)

and would generate code like

    int @property foo() { return f(); }

This is a very simplified example of what I'm trying to do, but I'm a bit stuck at this point -- if I'm generating the code as a string, how do I know how to refer to "func" alias (traits identifier / fullyQualifiedName just don't cut it for a lot of cases)? For one, thing, it could be an anonymous delegate like { return 0; } or symbol from another module or anything else. This is obviously doable if "func" is a string that gets mixed in, but what if it is an alias?

Without the "name" part, one could sure use a simple template:

    template makeUnnamedProperty(T, alias func) {
        T makeUnnamedProperty() @property { return func(); }
    }

and then this works...

    alias foo = makeUnnamedProperty!(int, f);

However, how does the one go about templating this when "foo" is a (compile-time) string?

Wonder if I'm missing something...

Thanks.

Reply via email to