From 668a1d8c44e6659b0b0d4d48daa3c0f79b77f6d5 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 11 Mar 2014 22:05:31 +0000 Subject: [PATCH] Fix ABI break I made in r203587; thanks to Richard Smith for the catch. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@203610 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/iterator | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/iterator b/include/iterator index 4c6b0a607..263ff3f51 100644 --- a/include/iterator +++ b/include/iterator @@ -538,16 +538,18 @@ class _LIBCPP_TYPE_VIS_ONLY reverse_iterator { protected: _Iter current; +private: + mutable _Iter __t; // no longer used as of LWG #2360, not removed due to ABI break public: typedef _Iter iterator_type; typedef typename iterator_traits<_Iter>::difference_type difference_type; typedef typename iterator_traits<_Iter>::reference reference; typedef typename iterator_traits<_Iter>::pointer pointer; - _LIBCPP_INLINE_VISIBILITY reverse_iterator() : current() {} - _LIBCPP_INLINE_VISIBILITY explicit reverse_iterator(_Iter __x) : current(__x) {} + _LIBCPP_INLINE_VISIBILITY reverse_iterator() : current(), __t() {} + _LIBCPP_INLINE_VISIBILITY explicit reverse_iterator(_Iter __x) : current(__x), __t() {} template _LIBCPP_INLINE_VISIBILITY reverse_iterator(const reverse_iterator<_Up>& __u) - : current(__u.base()) {} + : current(__u.base()), __t() {} _LIBCPP_INLINE_VISIBILITY _Iter base() const {return current;} _LIBCPP_INLINE_VISIBILITY reference operator*() const {_Iter __tmp = current; return *--__tmp;} _LIBCPP_INLINE_VISIBILITY pointer operator->() const {return _VSTD::addressof(operator*());}