Boost C++ Libraries: Ticket #6260: boost::multi_index can not work with nedmalloc https://svn.boost.org/trac10/ticket/6260 <blockquote> <p> I store terminal struct using multi_index, </p> </blockquote> <blockquote> <blockquote> <p> typedef boost::multi_index_container&lt; </p> <blockquote> <p> terminal*, boost::multi_index::indexed_by&lt; </p> <blockquote> <p> boost::multi_index::hashed_unique&lt; </p> <blockquote> <p> boost::multi_index::member&lt; </p> <blockquote> <p> terminal, unsigned int, &amp;terminal::logic_addr_&gt; &gt;, </p> </blockquote> </blockquote> <p> boost::multi_index::hashed_non_unique&lt; </p> <blockquote> <p> boost::multi_index::member&lt; </p> <blockquote> <p> terminal, unsigned int, &amp;terminal::master_logic_addr_&gt; &gt; &gt;, </p> </blockquote> </blockquote> <p> nedalloc::nedallocator&lt;terminal* &gt; &gt; </p> </blockquote> <p> terminal_map; </p> </blockquote> </blockquote> </blockquote> <p> but there is some error in compile. the error is following: </p> <p> 1&gt;e:\tmr\src\communicators\nedmalloc\nedmalloc.h(1338) : error C2248: 'nedalloc::nedallocatorI::baseimplementation&lt;implementation&gt;::operator =' : cannot access private member declared in class 'nedalloc::nedallocatorI::baseimplementation&lt;implementation&gt;' 1&gt; with 1&gt; [ 1&gt; implementation=nedalloc::nedallocator&lt;boost::multi_index::detail::hashed_index_node_impl&lt;nedalloc::nedallocator&lt;char,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty&gt;&gt;,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty&gt; 1&gt; ] 1&gt; e:\tmr\src\communicators\nedmalloc\nedmalloc.h(1060) : see declaration of 'nedalloc::nedallocatorI::baseimplementation&lt;implementation&gt;::operator =' 1&gt; with 1&gt; [ 1&gt; implementation=nedalloc::nedallocator&lt;boost::multi_index::detail::hashed_index_node_impl&lt;nedalloc::nedallocator&lt;char,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty&gt;&gt;,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty&gt; 1&gt; ] 1&gt; This diagnostic occurred in the compiler generated function 'nedalloc::nedallocator&lt;T,policy1,policy2,policy3,policy4,policy5,policy6,policy7,policy8,policy9,policy10,policy11,policy12,policy13,policy14,policy15&gt; &amp;nedalloc::nedallocator&lt;T,policy1,policy2,policy3,policy4,policy5,policy6,policy7,policy8,policy9,policy10,policy11,policy12,policy13,policy14,policy15&gt;::operator =(const nedalloc::nedallocator&lt;T,policy1,policy2,policy3,policy4,policy5,policy6,policy7,policy8,policy9,policy10,policy11,policy12,policy13,policy14,policy15&gt; &amp;)' 1&gt; with 1&gt; [ 1&gt; T=boost::multi_index::detail::hashed_index_node_impl&lt;nedalloc::nedallocator&lt;char,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty,nedalloc::nedpolicy::empty&gt;&gt;, 1&gt; policy1=nedalloc::nedpolicy::empty, 1&gt; policy2=nedalloc::nedpolicy::empty, 1&gt; policy3=nedalloc::nedpolicy::empty, 1&gt; policy4=nedalloc::nedpolicy::empty, 1&gt; policy5=nedalloc::nedpolicy::empty, 1&gt; policy6=nedalloc::nedpolicy::empty, 1&gt; policy7=nedalloc::nedpolicy::empty, 1&gt; policy8=nedalloc::nedpolicy::empty, 1&gt; policy9=nedalloc::nedpolicy::empty, 1&gt; policy10=nedalloc::nedpolicy::empty, 1&gt; policy11=nedalloc::nedpolicy::empty, 1&gt; policy12=nedalloc::nedpolicy::empty, 1&gt; policy13=nedalloc::nedpolicy::empty, 1&gt; policy14=nedalloc::nedpolicy::empty, 1&gt; policy15=nedalloc::nedpolicy::empty 1&gt; ] </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6260 Trac 1.4.3 Joaquín M López Muñoz Fri, 16 Dec 2011 21:33:49 GMT owner changed https://svn.boost.org/trac10/ticket/6260#comment:1 https://svn.boost.org/trac10/ticket/6260#comment:1 <ul> <li><strong>owner</strong> changed from <span class="trac-author">mariomulansky</span> to <span class="trac-author">Joaquín M López Muñoz</span> </li> </ul> <p> Hello, </p> <p> This is a messy part of the standard. Allocators are not required to be assignable, but it they're stateful (which the standard recommmends to support) then efficient container swap has to resort to swapping allocators as well: unfortunately there's no compile-time way to determine if a given allocator type is stateful, and assigning (or swapping) multi_index_containers implicitly invoke allocator assignment. </p> <p> You're simplest workaround is to define (possibly as a do-nothing function) operator= for nedallocator. Defining a swap function for nedallocators (within the same namespace as nedallocators are defined) will work too. </p> Ticket Joaquín M López Muñoz Fri, 13 Jan 2012 07:51:09 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/6260#comment:2 https://svn.boost.org/trac10/ticket/6260#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> Ticket