
I have learned that personally I shall never use boost::function. You probably may want to investigate such a code bloat. Though it is probably the known and expected behavior. And I do agree that CCCC is not quite relevant here. Just for information.
A bit late but FWIW... ...Boost.Function and its 'bloatware' problems are a regular topic on this list. There have been many proposals but near-zero response from the mantainer(s). I've made a major rewrite that solves most of the problems (lists.boost.org/Archives/boost/2010/10/172593.php) so you can try it out if it helps ;) Thank you for concern. I believe anyone can propose dozens of improvements of boost critical performance issues. But the main purpose of my investigation was to determine if boost is ready for commercial usage or it is still a kind of a playground. I just cannot afford to watch over every programmer in the company to see if they use boost sensibly. And I do understand people who write boost::function< int (int) > f1 = boost::bind(&g, _1 ); instead of boost::_bi::bind_t<int,int (*)(int),boost::_bi::list1<boost::arg<1> > > f2 = boost::bind(&g, _1 ); because it is convenient or they just find it stupid to memorize the second notation because the life is too short for such things.
So I am stuck with Intel Threading Building Blocks, Flex and so on things because I cannot explain the director why his old Delphi program is much faster and much easier for programmers to deal with than the modern C++ stuff. -- Michael Kochetkov