The following program fails under GCC 4.3.0 in pedantic mode, but works under 4.2.3.
#include <tr1/functional> struct S { void F() const {} }; int main() { std::tr1::function<void (S *)> a(&S::F); // doesn't work std::tr1::function<void (S *)> b(std::mem_fun(&S::F)); // works } g++ -c -pedantic test.cpp ... c:/devel/mingw/lib/gcc/../../include/c++/4.3.0/tr1_impl/type_traits:320: error: ignoring 'const' qualifiers added to function type 'void ()()const' I think the problem has to do with the way the signature gets decomposed. It starts off as void(S::*)()const. Next, tr1::is_member_function_pointer removes S::*, yielding void()()const. Finally, tr1::is_function calls remove_cv, which produces the above error. -- Summary: tr1::function fails with const member function pointer Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gcc at david dot osborn dot name GCC host triplet: i686-pc-mingw32 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35637