Boost logo

Boost Users :

Subject: [Boost-users] Insertion/Use of boost::multi_index - new thread
From: Ram (sourceopen_at_[hidden])
Date: 2016-09-19 05:29:13


Hi,

When I try to create a object of this,

typedef boost::multi_index_container<
ClassX*, //mapped value
boost::multi_index::indexed_by< //list of indices
boost::multi_index::hashed_unique<
boost::multi_index::const_mem_fun<ParentClassOfX, Key1,
&ParentClassOfX::getKey1> //hashed index by unique Key1
>,
boost::multi_index::hashed_unique<
boost::multi_index::const_mem_fun<ParentClassOfX, Vs64,
&ParentClassOfX::getKey2> //hashed index by unique Key1
>
>
>ClassXMultiKeyIndexed;

like,
ClassXMultiKeyIndexed sample;

and insert a pointer like this,

ClassX *a;
ClassXMultiKeyIndexed sample;

//a is not NULL and is filled up before the below insert
sample.insert(a);

This is the compilation error, it compiles fine if "sample.insert(a)" is
commented out.

Compilation error :

Compiling...
stm_container_manager_abc.cpp
c:\code\common\lib\boost\boost\detail\allocator_utilities.hpp(153) : error
C2061: syntax error : identifier 'p'

c:\code\common\lib\boost\boost\multi_index\detail\index_base.hpp(105) : see
reference to function template instantiation 'void
boost::detail::allocator::construct<Container*>(void *,const Type &)' being
compiled
        with
        [
            Type=Container *
        ]

c:\code\common\lib\boost\boost\multi_index\detail\index_base.hpp(102) :
while compiling class template member function
'boost::multi_index::detail::hashed_index_node<Super,Category>
*boost::multi_index::detail::index_base<Value,IndexSpecifierList,Allocator>::insert_(Container
*const &,boost::multi_index::detail::hashed_index_node<Super,Category>
*&,boost::multi_index::detail::lvalue_tag)'
        with
        [

Super=boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::index_node_base<Container
*,std::allocator<Container
*>>,boost::multi_index::detail::hashed_unique_tag>,
            Category=boost::multi_index::detail::hashed_unique_tag,
            Value=Container *,

IndexSpecifierList=boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>>,boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>>>,
            Allocator=std::allocator<Container *>
        ]
        c:\code\common\lib\boost\boost\multi_index\hashed_index.hpp(93) :
see reference to class template instantiation
'boost::multi_index::detail::index_base<Value,IndexSpecifierList,Allocator>'
being compiled
        with
        [
            Value=Container *,

IndexSpecifierList=boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>>,boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>>>,
            Allocator=std::allocator<Container *>
        ]
        c:\code\common\lib\boost\boost\multi_index\hashed_index.hpp(93) :
see reference to class template instantiation
'boost::multi_index::detail::hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>'
being compiled
        with
        [

KeyFromValue=boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>,
            Hash=boost::hash<boost::long_long_type>,
            Pred=std::equal_to<__int64>,
            SuperMeta=boost::multi_index::detail::nth_layer<2,Container
*,boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>>,boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>>>,std::allocator<Container
*>>,
            TagList=boost::mpl::vector0<boost::mpl::na>,
            Category=boost::multi_index::detail::hashed_unique_tag
        ]
        c:\code\common\lib\boost\boost\multi_index_container.hpp(100) : see
reference to class template instantiation
'boost::multi_index::detail::hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>'
being compiled
        with
        [

KeyFromValue=boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>,
            Hash=boost::hash<boost::long_long_type>,
            Pred=std::equal_to<__int64>,
            SuperMeta=boost::multi_index::detail::nth_layer<1,Container
*,boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>>,boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>>>,std::allocator<Container
*>>,
            TagList=boost::mpl::vector0<boost::mpl::na>,
            Category=boost::multi_index::detail::hashed_unique_tag
        ]

c:\code\common\src\biz\model\stm-stow_model\stm_container_manager_abc.h(323)
: see reference to class template instantiation
'boost::multi_index::multi_index_container<Value,IndexSpecifierList>' being
compiled
        with
        [
            Value=Container *,

IndexSpecifierList=boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Key1,DBObject::getKey1>>,boost::multi_index::hashed_unique<boost::multi_index::const_mem_fun<DBObject,Vs64,DBObject::getKey2>>>
        ]
Build log was saved at "file://c:\code\win\Debug\obj\BuildLog.htm"
ProjABC - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



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