struct A { void foo(T)(T t) {} void foo(long l) {} void bar(long l) {} void bar(T)(T t) {} } static assert(__traits(getOverloads, A, "foo").length == 1); static assert(__traits(getOverloads, A.init, "foo").length == 1); static assert(__traits(getOverloads, A, "foo", true).length == 2); static assert(__traits(getOverloads, A.init, "foo", true).length == 2); static assert(__traits(getOverloads, A, "bar").length == 1); static assert(__traits(getOverloads, A.init, "bar").length == 1); static assert(__traits(getOverloads, A, "bar", true).length == 2); static assert(__traits(getOverloads, A.init, "bar", true).length == 2);