
The following code does not compile using gcc 3.4.3. I tried it with the same results using 1.32 and 1.33. Reversing the order of the #includes fixes the problem. Is this a known order dependency? If so, I couldn't find it documented anywhere. #include <boost/multi_index_container.hpp> #include <boost/mpl/map.hpp> int main() { return 0; } Compiler output: In file included from /usr/local/include/boost-1_33/boost/mpl/map/aux_/begin_end_impl.hpp:20, from /usr/local/include/boost-1_33/boost/mpl/map/map0.hpp:30, from /usr/local/include/boost-1_33/boost/mpl/map/map10.hpp:19, from /usr/local/include/boost-1_33/boost/mpl/map/map20.hpp:19, from /usr/local/include/boost-1_33/boost/mpl/map.hpp:36, from test.cpp:2: /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:41: error: wrong number of template arguments (2, should be 1) /usr/local/include/boost-1_33/boost/mpl/void.hpp:37: error: provided for `template<class T> struct boost::mpl::is_void_' /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:41: error: `type' is not a member of `<declaration error>' /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:41: error: `type' is not a member of `<declaration error>' /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:42: error: template argument 1 is invalid /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:44: error: expected `{' before '>' token /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:44: error: expected unqualified-id before '>' token /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:44: error: expected `;' before '>' token /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:62: error: expected nested-name-specifier before "item_by_order" /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:62: error: ISO C++ forbids declaration of `item_by_order' with no type /usr/local/include/boost-1_33/boost/mpl/map/aux_/iterator.hpp:62: error: expected `;' before '<' token