I’m having issues compiling some multi_index_container code after upgrading from gcc 4.3.4 to gcc 4.6.1 and wondering if anyone can shed some light. Perhaps this should be directed to gcc, but I have not been able to reduce this to not include multi_index. The contrived code below is the furthest I have been able to reduce the problem so far:**** ** ** 1 #include <boost/multi_index_container.hpp>**** 2 #include <boost/multi_index/ordered_index.hpp>**** 3 #include <boost/multi_index/member.hpp>**** 4 #include <boost/multi_index/composite_key.hpp>**** 5**** 6 using namespace boost::multi_index;**** 7**** 8 struct Data{**** 9 double _d;**** 10 };**** 11**** 12 typedef multi_index_container< Data,**** 13 indexed_by< ordered_non_unique<**** 14 composite_key< Data, member<Data, double, &Data::_d> >**** 15 > >**** 16 > Map;**** 17**** 18 template <int T>**** 19 void foo(){**** 20 Map mi;**** 21 mi.get<0>().equal_range(boost::make_tuple(0.0));**** 22 }**** 23 int main(){**** 24 foo<5>();**** 25 }**** ** ** The failures from gcc 4.6.1 are:**** ** ** boost/multi_index/detail/index_base.hpp: In function 'void foo() [with int T = 5]':**** boost/multi_index/detail/index_base.hpp:49:47: error: 'typedef struct boost::multi_index::detail::index_node_base<Data, std::allocator<Data> > boost::multi_index::detail::index_base<Data, boost ::multi_index::indexed_by<boost::multi_index::ordered_non_unique<boost ::multi_index::composite_key<Data, boost::multi_index::member<Data, double, &Data::_d> > > >, std::allocator<Data> >::node_type' is protected**** tstmi.cpp:24:10: error: within this context**** ** ** ** ** This code appears to compile fine under 4.3.4 and would compile with 4.6.1 if the useless template at line 18 was removed.**** ** ** Many thanks