Boost logo

Boost Users :

Subject: [Boost-users] Help Required, trouble while using boost::multi_index
From: Ram (sourceopen_at_[hidden])
Date: 2016-09-16 08:44:34


Hi,

I am trying to create a ClassX using "boost::multi_index" and I was
successfully able to create a ClassX like,

typedef boost::multi_index_ClassX<
  ClassX*,
  boost::multi_index::indexed_by<
boost::multi_index::hashed_unique<
    boost::multi_index::const_mem_fun<ParentOfClassX, Int64,
&ParentOfClassX::getKey1>,
                boost::multi_index::const_mem_fun<ParentOfClassX, Int64,
&ParentOfClassX::getKey2>,
>
>
> MultiIndexedClassX;

This compiles perfectly with no problems.

I am writing the code and compiling with Visual Studio 2005 and have
included,

#include <boost/multi_index_container.hpp>
#include "boost/multi_index/hashed_index_fwd.hpp"
#include <boost/multi_index/mem_fun.hpp>

and have defined namespaces,

using namespace boost::multi_index;
using boost::multi_index::multi_index_container;
using boost::multi_index::hashed_unique;
using boost::multi_index::indexed_by;

But when I create an object of that type like,

MultiIndexedClassX sample;

I get a big list compilation errors like,

*c:\code\common\lib\boost\boost\multi_index\detail\node_type.hpp(44) :
error C2903: 'node_class' : symbol is neither a class template nor a
function template*
*
c:\code\common\lib\boost\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49)
: see reference to class template instantiation
'boost::multi_index::detail::index_node_applier::apply<IndexSpecifierIterator,Super>'
being compiled*
* with*
* [*
*
IndexSpecifierIterator=boost::mpl::v_iter<boost::mpl::vector1<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<ParentOfClassX,GKey,ParentOfClassX::getKey1>,boost::multi_index::const_mem_fun<ParentOfClassX,Vs64,ParentOfClassX::getKey2>>>,0>,*
* Super=boost::multi_index::detail::index_node_base<ClassX
*,std::allocator<ClassX *>>*
* ]*
*
c:\code\common\lib\boost\boost\mpl\aux_\preprocessed\plain\bind.hpp(207) :
see reference to class template instantiation
'boost::mpl::apply_wrap2<F,T1,T2>' being compiled*
* with*
* [*
* F=boost::multi_index::detail::index_node_applier,*
*
T1=boost::mpl::v_iter<boost::mpl::vector1<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<ParentOfClassX,GKey,ParentOfClassX::getKey1>,boost::multi_index::const_mem_fun<ParentOfClassX,Vs64,ParentOfClassX::getKey2>>>,0>,*
* T2=boost::multi_index::detail::index_node_base<ClassX
*,std::allocator<ClassX *>>*
* ]*
*
c:\code\common\lib\boost\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49)
: see reference to class template instantiation
'boost::mpl::bind2<F,T1,T2>::apply<U1,U2>' being compiled*
* with*
* [*
* F=boost::multi_index::detail::index_node_applier,*
* T1=boost::mpl::_2,*
* T2=boost::mpl::_1,*
* U1=boost::multi_index::detail::index_node_base<ClassX
*,std::allocator<ClassX *>>,*
*
U2=boost::mpl::v_iter<boost::mpl::vector1<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<ParentOfClassX,GKey,ParentOfClassX::getKey1>,boost::multi_index::const_mem_fun<ParentOfClassX,Vs64,ParentOfClassX::getKey2>>>,0>*
* ]*
*
c:\code\common\lib\boost\boost\mpl\aux_\preprocessed\plain\apply.hpp(63) :
see reference to class template instantiation
'boost::mpl::apply_wrap2<F,T1,T2>' being compiled*
* with*
* [*
*
F=boost::mpl::bind2<boost::multi_index::detail::index_node_applier,boost::mpl::_2,boost::mpl::_1>,*
* T1=boost::multi_index::detail::index_node_base<ClassX
*,std::allocator<ClassX *>>,*
*
T2=boost::mpl::v_iter<boost::mpl::vector1<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<ParentOfClassX,GKey,ParentOfClassX::getKey1>,boost::multi_index::const_mem_fun<ParentOfClassX,Vs64,ParentOfClassX::getKey2>>>,0>*
* ]*
*
c:\code\common\lib\boost\boost\mpl\aux_\preprocessed\plain\reverse_iter_fold_impl.hpp(58)
: see reference to class template instantiation
'boost::mpl::apply2<F,T1,T2>' being compiled*
* with*
* [*
*
F=boost::mpl::bind2<boost::multi_index::detail::index_node_applier,boost::mpl::_2,boost::mpl::_1>,*
* T1=boost::multi_index::detail::index_node_base<ClassX
*,std::allocator<ClassX *>>,*
*
T2=boost::mpl::v_iter<boost::mpl::vector1<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<ParentOfClassX,GKey,ParentOfClassX::getKey1>,boost::multi_index::const_mem_fun<ParentOfClassX,Vs64,ParentOfClassX::getKey2>>>,0>*
* ]*

Thanks,
Ram



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net