
The approach you suggest is not well-formed C++ and is specific to your particular configuration; it might fare worst on others. Why it is not well-formed C++?
2. the investigation of opinions of boost people (I have made another inquiry in "[boost] [function] The cost of boost::function" thread)
boost::function is heavyweight and has significant costs. If you don't need the features boost::function provides, simply don't use it and avoid the costs associated with it. The people I deal with in the real world do not think about its weight. They just cannot memorize boost::_bi::bind_t<int,int (*)(int),boost::_bi::list1<boost::arg<1> > > and type it correctly. So they use boost::function just for convenience.
3. The words on the top of the boost.org page ""...one of the most highly regarded and expertly designed C++ library projects in the world." - Herb Sutter and Andrei Alexandrescu, C++ Coding Standards" really need some grounds.
Those are citations from well-known people in the C++ community. They themselves are grounds. They probably have never thought of the problem above. Or they do not care. I do.
-- Michael Kochetkov