http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60803
Bug ID: 60803 Summary: Trivial example of overloading in the presence of inheritance fails Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: eric.niebler at gmail dot com The following very simple code fails to compile: /////////////////////////////////// template<typename Ts> struct refines : Ts {}; struct A {}; struct B : refines<A> {}; struct C : refines<B> {}; void fun(void *) {} template<typename T> int fun(refines<T> *) { return 0; } int main() { C *p = 0; int i = fun(p); } ////////////////////