------- Comment #2 from pinskia at gcc dot gnu dot org 2005-10-06 19:48 ------- Here is the reduced testcase: template <class R, template <class> class P, class T, class A> inline int mem_fun(R (T::*f)(A), const P<T>& null) {}
template <class T> class never_ptr {}; struct instance_collection_base { int& pair_dump(int&) const; static const never_ptr<const instance_collection_base> null; }; int& dump(int& o) { mem_fun(&instance_collection_base::pair_dump, instance_collection_base::null); } But I think this is invalid as "const instance_collection_base" is not the same as instance_collection_base. so T cannot be matched to "const instance_collection_base" as it was before 4.1.0/4.0.2. ICC and Comeau rejects the same code too for the same reason. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24243