
Hi, I have a problem compiling the code snippet below with MSVC 7.1 (Intel Compiler 9.0 and GCC compile it just fine). The problem trigger is keyword "virtual" in class base inheritance - if you remove it it will compile OK. The error message is very weird: boost\type_traits\is_function.hpp(65) : error C2371: 'boost::detail::t' : redefinition; different basic types boost\type_traits\is_function.hpp(65) : see declaration of 'boost::detail::t' boost\type_traits\is_function.hpp(82) : see reference to class template instantiation '<Unknown>' being compiled boost\tuple\detail\tuple_basic.hpp(310) : see reference to class template instantiation '<Unknown>' being compiled boost\tuple\detail\tuple_basic.hpp(418) : see reference to class template instantiation '<Unknown>' being compiled boost\multi_index\detail\def_ctor_tuple_cons.hpp(33) : see reference to class template instantiation '<Unknown>' being compiled boost\multi_index_container.hpp(140) : see reference to class template instantiation '<Unknown>' being compiled Also, it is critical for reproducing to have 2 independent inheritance chains - if I remove name_record_set2 class and variable it also compiles just fine. Here is the code itself: #include <boost/multi_index_container.hpp> #include <boost/multi_index/mem_fun.hpp> #include <boost/multi_index/ordered_index.hpp> using namespace boost::multi_index; class base {}; class base_record : virtual public base { public: base_record() : id_(0) {} int get_id() const { return id_; } private: int id_; }; class name_record : public base_record {}; class name_record2 : public base_record {}; typedef multi_index_container< name_record, indexed_by< ordered_unique< BOOST_MULTI_INDEX_CONST_MEM_FUN(base_record, int, get_id) >
name_record_set;
typedef multi_index_container< name_record2, indexed_by< ordered_unique< BOOST_MULTI_INDEX_CONST_MEM_FUN(base_record, int, get_id) >
name_record_set2;
int main() { name_record_set ns; name_record_set2 ns2; ns.insert(name_record()); ns2.insert(name_record2()); return 0; } P.S. I use boost from RC_1_34 tag. -- Alexei Alexandrov