This is not a regression, but seems a serious problem, which, actually, is blocking a simple implementation of various tr1/type_traits facilities :(
The following simplified testcase fails: for some reason, pointers to member functions (vs, pointers to member objects) are not matched. ICC has no problems at all with it. //--------------------------------------------- #include <cassert> template<bool _Tv> struct integral_constant { static const bool value = _Tv; }; typedef integral_constant<true> true_type; typedef integral_constant<false> false_type; template<typename> struct is_member_pointer : public false_type { }; template<typename _Tp, typename _Cp> struct is_member_pointer<_Tp _Cp::*> : public true_type { }; typedef void F(); struct S {}; typedef F S::*PMF; int main() { assert( is_member_pointer<PMF>::value ); } //----------------------------------------------- -- Summary: Pointer to member function not matched Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pcarlini at suse dot de CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: Any GCC host triplet: Any GCC target triplet: Any http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19076