]> gcc.gnu.org Git - gcc.git/commitdiff
re PR libstdc++/58049 (libstdc++ bootstrap failure for fix to PR libstdc++/57779)
authorPaolo Carlini <paolo.carlini@oracle.com>
Fri, 2 Aug 2013 07:34:55 +0000 (07:34 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 2 Aug 2013 07:34:55 +0000 (07:34 +0000)
2013-08-02  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/58049
* include/debug/functions.h: Include <bits/move.h>; minor formatting
changes.
(__foreign_iterator_aux4): Declare __l and __ge constexpr.
* include/debug/safe_iterator.h (_Safe_iterator<>::operator->):
Use __addressof.
* include/debug/safe_local_iterator.h (_Safe_local_iterator<>::
operator->): Likewise.

From-SVN: r201424

libstdc++-v3/ChangeLog
libstdc++-v3/include/debug/functions.h
libstdc++-v3/include/debug/safe_iterator.h
libstdc++-v3/include/debug/safe_local_iterator.h

index 651f8b6a9747b8babad51de0812cd53aea64916c..4ec4343d3393c1aa8d56d39b8707188bee966404 100644 (file)
@@ -1,3 +1,14 @@
+2013-08-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/58049
+       * include/debug/functions.h: Include <bits/move.h>; minor formatting
+       changes.
+       (__foreign_iterator_aux4): Declare __l and __ge constexpr.
+       * include/debug/safe_iterator.h (_Safe_iterator<>::operator->):
+       Use __addressof.
+       * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::
+       operator->): Likewise.
+
 2013-08-01  François Dumont  <fdumont@gcc.gnu.org>
 
        PR libstdc++/57779
index 87478c6fbc15b2b8c954be04ec0f895b1e3706c7..463353e0fc43ce7b88a9205fd788504b314b485e 100644 (file)
@@ -33,6 +33,7 @@
 #include <bits/stl_iterator_base_types.h> // for iterator_traits, categories and
                                          // _Iter_base
 #include <bits/cpp_type_traits.h>        // for __is_integer
+#include <bits/move.h>                    // for __addressof and addressof
 #if __cplusplus >= 201103L
 # include <bits/stl_function.h>                  // for less and greater_equal
 # include <type_traits>                          // for common_type
@@ -126,8 +127,8 @@ namespace __gnu_debug
     inline bool
     __valid_range_aux(const _InputIterator& __first,
                      const _InputIterator& __last, std::__false_type)
-  { return __valid_range_aux2(__first, __last,
-                             std::__iterator_category(__first)); }
+    { return __valid_range_aux2(__first, __last,
+                               std::__iterator_category(__first)); }
 
   /** Don't know what these iterators are, or if they are even
    *  iterators (we may get an integral type for InputIterator), so
@@ -182,15 +183,14 @@ namespace __gnu_debug
     {
       typedef typename std::common_type<_PointerType1,
                                        _PointerType2>::type _PointerType;
-      std::less<_PointerType> __l;
-      std::greater_equal<_PointerType> __ge;
-
-      return
-       __l(std::addressof(*__other),
-           std::addressof(*(__it._M_get_sequence()->_M_base().begin())))
-       || __ge(std::addressof(*__other),
-               std::addressof(*(__it._M_get_sequence()->_M_base().end() - 1)) + 1);
-      
+      constexpr std::less<_PointerType> __l;
+      constexpr std::greater_equal<_PointerType> __ge;
+
+      return (__l(std::addressof(*__other),
+                 std::addressof(*(__it._M_get_sequence()->_M_base().begin())))
+             || __ge(std::addressof(*__other),
+                     std::addressof(*(__it._M_get_sequence()->_M_base().end()
+                                      - 1)) + 1));
     }
                          
   template<typename _Iterator, typename _Sequence, typename _InputIterator>
@@ -205,12 +205,13 @@ namespace __gnu_debug
       // past-the-end iterator.
       if (__it._M_get_sequence()->_M_base().begin()
          != __it._M_get_sequence()->_M_base().end())
-       if (std::__addressof(*(__it._M_get_sequence()->_M_base().end() - 1))
-           - std::__addressof(*(__it._M_get_sequence()->_M_base().begin()))
+       if (std::addressof(*(__it._M_get_sequence()->_M_base().end() - 1))
+           - std::addressof(*(__it._M_get_sequence()->_M_base().begin()))
            == __it._M_get_sequence()->size() - 1)
-         return __foreign_iterator_aux4(__it, __other,
-                       std::addressof(*(__it._M_get_sequence()->_M_base().begin())),
-                       std::addressof(*__other));
+         return (__foreign_iterator_aux4
+                 (__it, __other,
+                  std::addressof(*(__it._M_get_sequence()->_M_base().begin())),
+                  std::addressof(*__other)));
       return true;
     }
                           
@@ -232,8 +233,8 @@ namespace __gnu_debug
     { return __it._M_get_sequence() != __other._M_get_sequence(); }
                           
 #if __cplusplus >= 201103L
-  /* This overload detects when passing pointers to the contained elements rather
-     than using iterators.
+  /* This overload detects when passing pointers to the contained elements
+     rather than using iterators.
    */
   template<typename _Iterator, typename _Sequence, typename _InputIterator>
     inline bool
@@ -271,10 +272,9 @@ namespace __gnu_debug
                           _InputIterator __other,
                           std::__false_type)
     {
-      return
-       _Insert_range_from_self_is_safe<_Sequence>::__value
-       || __foreign_iterator_aux2(__it, __other,
-                                  std::__iterator_category(__it));
+      return (_Insert_range_from_self_is_safe<_Sequence>::__value
+             || __foreign_iterator_aux2(__it, __other,
+                                        std::__iterator_category(__it)));
     }
 
   template<typename _Iterator, typename _Sequence,
index b8a971b80e0c0169f3fe3615b4dfb2fa288caf08..a1f7651b1bd329e79399057cc6216d9ed0f515bd 100644 (file)
@@ -269,7 +269,6 @@ namespace __gnu_debug
        *  @brief Iterator dereference.
        *  @pre iterator is dereferenceable
        *  @todo Make this correct w.r.t. iterators that return proxies
-       *  @todo Use addressof() instead of & operator
        */
       pointer
       operator->() const
@@ -277,7 +276,7 @@ namespace __gnu_debug
        _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
                              _M_message(__msg_bad_deref)
                              ._M_iterator(*this, "this"));
-       return &*_M_current;
+       return std::__addressof(*_M_current);
       }
 
       // ------ Input iterator requirements ------
index 6426ed82afa3567284b2d9e7b4a3cde093383d02..82975b7072296a5c689ea5ef5d9c91457417ad63 100644 (file)
@@ -173,7 +173,6 @@ namespace __gnu_debug
        *  @brief Iterator dereference.
        *  @pre iterator is dereferenceable
        *  @todo Make this correct w.r.t. iterators that return proxies
-       *  @todo Use addressof() instead of & operator
        */
       pointer
       operator->() const
@@ -181,7 +180,7 @@ namespace __gnu_debug
        _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(),
                              _M_message(__msg_bad_deref)
                              ._M_iterator(*this, "this"));
-       return &*_M_current;
+       return std::__addressof(*_M_current);
       }
 
       // ------ Input iterator requirements ------
This page took 0.074931 seconds and 5 git commands to generate.