Re: [Boost-bugs] [Boost C++ Libraries] #9801: I can no longer create and iterator_range from a stable_vector

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9801: I can no longer create and iterator_range from a stable_vector
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-06-05 13:07:06


#9801: I can no longer create and iterator_range from a stable_vector
------------------------------------------+------------------------
  Reporter: Joseph Southwell <joseph@…> | Owner: igaztanaga
      Type: Bugs | Status: new
 Milestone: Boost 1.56.0 | Component: container
   Version: Boost Release Branch | Severity: Regression
Resolution: | Keywords:
------------------------------------------+------------------------
Changes (by neilgroves):

 * owner: neilgroves => igaztanaga
 * status: assigned => new
 * component: range => container

Comment:

 I have been able to reproduce the problem. This is a compiler defect that
 has plagued Microsoft C++ compilers for many major versions. It simply
 reaches a scalability point where the names become jumbled and muddled
 between namespaces. It is almost impossible to reproduce a small test case
 and therefore very difficult to get Microsoft to take the report
 seriously.

 The reason that only stable_vector appears to be a problem is that it,
 quite legitimately uses the class name iterator within the
 boost::stable_vector_detail namespace. However the Microsoft compiler is
 confusing the class in boost::stable_vector_detail::iterator with the
 iterator typedef within stable_vector. I have proven this to be true by
 renaming boost::stable_vector_detail::iterator to
 boost::stable_vector_detail::sv_iterator and showing that this fixes the
 issue.

 It is therefore clearly neither a defect in Boost.Container or
 Boost.Range, but try as I might there appears to only be the possibilty to
 work-around this problem by making a small change to Boost.Container.

 I am therefore reassigning this defect to Boost.Container since I do not
 have write-access to fix this problem myself. It is clear that simply
 renaming iterator to sv_iterator fixes this issue.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9801#comment:7>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC