On 9/17/12, Andre <an...@s-e-a-p.de> wrote: > Get identifier of "this"
You can't really get that info at runtime, a class object isn't bound to a name, 'this' has no identifier. Symbols (like variables) have identifiers, not objects. > public class Bank{ Unnecessary, declarations are public by default. > public enum test() 'enum' has no meaning in a return type. Either it's 'auto' which infers the return type from the function body, or it's a specific type like 'string' (or void if no return type). > { > return "writeln(\""~__traits(identfier, this)~"\");"; typo: identifier, not identfier > } > } > > public static void main(){ public and static have no meaning here. > During compile time, following code should be generated: > writeln("b"); It's not possible to mixin a string at compile-time from a string returned from a method of an object which is instantiated at runtime. If you want the identifier of the variable then you don't have to deal with the 'this' reference at all, e.g.: @property string test(alias symb)() { return "writeln(\"" ~ __traits(identifier, symb) ~ "\");"; } class Bank { } void main() { Bank b = new Bank; mixin(test!b); } Your original sample does cause a compiler ICE but I don't know if it's worth filing since the code was invalid.