https://issues.dlang.org/show_bug.cgi?id=18947
Simen Kjaeraas <simen.kja...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID |--- --- Comment #2 from Simen Kjaeraas <simen.kja...@gmail.com> --- Your solution requires me to change the type to get information that is already available to the compiler elsewhere. To top it off, the behavior is inconsistent: mixin template foo(T) { static int fun(T) { return 0; } } struct S1 { mixin foo!int; } unittest { alias a = __traits(getMember, S1, "fun"); a(1); // Works fine // Can get overloads when there's only one: static assert(__traits(getOverloads, S1, "fun").length == 1); } struct S2 { mixin foo!int; mixin foo!string; } unittest { __traits(getMember, S2, "fun")(2); // Works fine __traits(getMember, S2, "fun")(""); // Works fine alias a = __traits(getMember, S2, "fun"); a(2); // Error: function expected before (), not void of type void a(""); // Error: function expected before (), not void of type void } struct S3 { static int fun(int) { return 0; } static int fun(string) { return 0; } } unittest { alias a = __traits(getMember, S3, "fun"); a(3); // Works fine a(""); // Works fine } --