#include #include #include class A { void hello( int ) {} }; void bye( int ) {} int main( int argc, char **argv ) { // OK boost::function< boost::remove_pointer< BOOST_TYPEOF( &bye ) >::type > m_func; // Compile error boost::function< boost::remove_pointer< BOOST_TYPEOF( &A::hello ) >::type > m_func2; return 0; }