https://d.puremagic.com/issues/show_bug.cgi?id=12102
Summary: Testing presence of member functions with same name but different signature fails Product: D Version: 2.041 Platform: x86_64 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: xa...@xammy.info --- Comment #0 from Matthias Walter <xa...@xammy.info> 2014-02-07 13:21:14 PST --- The check of MyClass.func(MyClass.A) and MyClass.func(MyClass.B) in the main() function succeeds, but the alias line *in* the class definition fails with "template instance main.ConditionalUse!(MyClass) does not match template declaration ConditionalUse(T) if (hasFuncs!T)". If I rename func to funcA and funcB (making the name unambiguous), both checks succeed. Is this a bug? template hasFuncs(T) // Checks presence of T.func(T.A) and T.func(T.B) { enum bool hasFuncs = is(typeof((T t, T.A a){ t.func(a); })) && is(typeof((T t, T.B b){ t.func(b); })); } struct ConditionalUse(T) if (hasFuncs!T) { } // This line fails with // // template instance main.ConditionalUse!(MyClass) does not // match template declaration ConditionalUse(T) if (hasFuncs!T) class MyClass { struct A {} struct B {} alias ConditionalUse!MyClass Foo; void func(A a) { } void func(B b) { } } int main(char[][] args) { static assert(hasFuncs!MyClass); // This assert succeeds. return 0; } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------