Ticket #9801: file.patch

File file.patch, 12.1 KB (added by Joseph Southwell <joseph@…>, 8 years ago)

patch file to work around the problem in the stable_vector_detail namespace

  • include/boost/container/stable_vector.hpp

    diff --git a/include/boost/container/stable_vector.hpp b/include/boost/container/stable_vector.hpp
    index 691cf58..c952421 100644
    a b struct node  
    131131};
    132132
    133133template<typename Pointer, bool IsConst>
    134 class iterator
     134class iterator_vs
    135135{
    136136   typedef boost::intrusive::pointer_traits<Pointer>                                non_const_ptr_traits;
    137137   public:
    class iterator  
    168168
    169169   public:
    170170
    171    explicit iterator(node_ptr p) BOOST_CONTAINER_NOEXCEPT
     171   explicit iterator_vs(node_ptr p) BOOST_CONTAINER_NOEXCEPT
    172172      : m_pn(p)
    173173   {}
    174174
    175    iterator() BOOST_CONTAINER_NOEXCEPT
     175   iterator_vs() BOOST_CONTAINER_NOEXCEPT
    176176   {}
    177177
    178    iterator(iterator<Pointer, false> const& other) BOOST_CONTAINER_NOEXCEPT
     178   iterator_vs(iterator_vs<Pointer, false> const& other) BOOST_CONTAINER_NOEXCEPT
    179179      :  m_pn(other.node_pointer())
    180180   {}
    181181
    class iterator  
    197197   }
    198198
    199199   //Increment / Decrement
    200    iterator& operator++() BOOST_CONTAINER_NOEXCEPT
     200   iterator_vs& operator++() BOOST_CONTAINER_NOEXCEPT
    201201   {
    202202      if(node_base_ptr_ptr p = this->m_pn->up){
    203203         ++p;
    class iterator  
    206206      return *this;
    207207   }
    208208
    209    iterator operator++(int) BOOST_CONTAINER_NOEXCEPT
    210    {  iterator tmp(*this);  ++*this; return iterator(tmp); }
     209   iterator_vs operator++(int) BOOST_CONTAINER_NOEXCEPT
     210   {  iterator_vs tmp(*this);  ++*this; return iterator_vs(tmp); }
    211211
    212    iterator& operator--() BOOST_CONTAINER_NOEXCEPT
     212   iterator_vs& operator--() BOOST_CONTAINER_NOEXCEPT
    213213   {
    214214      if(node_base_ptr_ptr p = this->m_pn->up){
    215215         --p;
    class iterator  
    218218      return *this;
    219219   }
    220220
    221    iterator operator--(int) BOOST_CONTAINER_NOEXCEPT
    222    {  iterator tmp(*this);  --*this; return iterator(tmp);  }
     221   iterator_vs operator--(int) BOOST_CONTAINER_NOEXCEPT
     222   {  iterator_vs tmp(*this);  --*this; return iterator_vs(tmp);  }
    223223
    224224   reference operator[](difference_type off) const BOOST_CONTAINER_NOEXCEPT
    225225   {
    226       iterator tmp(*this);
     226      iterator_vs tmp(*this);
    227227      tmp += off;
    228228      return *tmp;
    229229   }
    230230
    231    iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT
     231   iterator_vs& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT
    232232   {
    233233      if(node_base_ptr_ptr p = this->m_pn->up){
    234234         p += off;
    class iterator  
    237237      return *this;
    238238   }
    239239
    240    friend iterator operator+(const iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT
     240   friend iterator_vs operator+(const iterator_vs &left, difference_type off) BOOST_CONTAINER_NOEXCEPT
    241241   {
    242       iterator tmp(left);
     242      iterator_vs tmp(left);
    243243      tmp += off;
    244244      return tmp;
    245245   }
    246246
    247    friend iterator operator+(difference_type off, const iterator& right) BOOST_CONTAINER_NOEXCEPT
     247   friend iterator_vs operator+(difference_type off, const iterator_vs& right) BOOST_CONTAINER_NOEXCEPT
    248248   {
    249       iterator tmp(right);
     249      iterator_vs tmp(right);
    250250      tmp += off;
    251251      return tmp;
    252252   }
    253253
    254    iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT
     254   iterator_vs& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT
    255255   {  *this += -off; return *this;   }
    256256
    257    friend iterator operator-(const iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT
     257   friend iterator_vs operator-(const iterator_vs &left, difference_type off) BOOST_CONTAINER_NOEXCEPT
    258258   {
    259       iterator tmp(left);
     259      iterator_vs tmp(left);
    260260      tmp -= off;
    261261      return tmp;
    262262   }
    263263
    264    friend difference_type operator-(const iterator& left, const iterator& right) BOOST_CONTAINER_NOEXCEPT
     264   friend difference_type operator-(const iterator_vs& left, const iterator_vs& right) BOOST_CONTAINER_NOEXCEPT
    265265   {  return left.m_pn->up - right.m_pn->up;  }
    266266
    267267   //Comparison operators
    268    friend bool operator==   (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     268   friend bool operator==   (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    269269   {  return l.m_pn == r.m_pn;  }
    270270
    271    friend bool operator!=   (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     271   friend bool operator!=   (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    272272   {  return l.m_pn != r.m_pn;  }
    273273
    274    friend bool operator<    (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     274   friend bool operator<    (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    275275   {  return l.m_pn->up < r.m_pn->up;  }
    276276
    277    friend bool operator<=   (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     277   friend bool operator<=   (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    278278   {  return l.m_pn->up <= r.m_pn->up;  }
    279279
    280    friend bool operator>    (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     280   friend bool operator>    (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    281281   {  return l.m_pn->up > r.m_pn->up;  }
    282282
    283    friend bool operator>=   (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT
     283   friend bool operator>=   (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT
    284284   {  return l.m_pn->up >= r.m_pn->up;  }
    285285};
    286286
    class stable_vector  
    501501   {  allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder);   }
    502502
    503503   friend class stable_vector_detail::clear_on_destroy<stable_vector>;
    504    typedef stable_vector_detail::iterator
     504   typedef stable_vector_detail::iterator_vs
    505505      < typename allocator_traits<Allocator>::pointer
    506506      , false>                                           iterator_impl;
    507    typedef stable_vector_detail::iterator
     507   typedef stable_vector_detail::iterator_vs
    508508      < typename allocator_traits<Allocator>::pointer
    509509      , false>                                           const_iterator_impl;
    510510   #endif   //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED