On 05/10/2013 04:17 PM, Paolo Carlini wrote:
this is the issue about the signatures of the erase member functions
of the sequence containers. Mostly rather straightfoward stuff within
the limits of the current infrastructure: the various _M_const_case
are normally simple enough, I only mention the rather ugly std::vector
one, required otherwise an ext_pointer testcase fails: I suppose that
handling these issues in a proper way will happen together with
changing the vector::pointer typedef to the conforming:
typedef typename _Alloc_traits::pointer pointer;
Oops, the PR that Jonathan just filed made me notice that in fact
std::vector must be correct, because _Base::pointer actually means using
_Alloc_traits.
Then I suppose that the correct way to move forward to C++11 the
ext/pointer.h stuff would be adding a pointer_traits specialization for
those pointer-like types, which would also wrap the cast operations in
pointer_to. Then, in __normal_iterator::_M_const_cast use pointer_traits.
Paolo.