
While in the process of replacing iterator helpers from <boost/operators.hpp> in favor of boost::iterator_facade as my internal iterator generation lib in Boost.MultiIndex, I've discovered an unpleasant increase in compilation times. The attached program shows the problem. Compilation times when using boost::iterator_facade are *way* higher than with good old boost::bidirectional_iterator_helper (to test it yourself, just comment/uncomment the line "#define USE_BOOST_ITERATOR" in the program): MSVC++ 6.0: iterator_facade: ~7 sec. bidirectional_iterator_helper: less than 1 sec. GCC 3.2 iterator_facade: 4.9 sec. bidirectional_iterator_helper: 2.5 sec. My questions: 1. Maybe the test program is flawed and has some (unseen by me) bias in favor of bidirectional_iterator_helper? 2. If not so, why is iterator_facade so very expensive? Is there any way to alleviate the problem? As it stands, I'm not so sure it's a good idea to adopt boost::iterator_facade: my local tests for Boost.MultiIndex show an overall increase in compilation time of around 25% :( Thanks for your help, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo