summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-08-02 07:34:55 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-08-02 07:34:55 +0000
commit6e61baeb55c72f2311ecd6afe50855bd4cecf135 (patch)
tree9d118b91e487421949261fc3184a5e3e9d7c7ff4 /libstdc++-v3
parent9a653b4393d38cad4914caeea17d1356c0c2bd78 (diff)
downloadgcc-6e61baeb55c72f2311ecd6afe50855bd4cecf135.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201424 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/include/debug/functions.h44
-rw-r--r--libstdc++-v3/include/debug/safe_iterator.h3
-rw-r--r--libstdc++-v3/include/debug/safe_local_iterator.h3
4 files changed, 35 insertions, 26 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 651f8b6a974..4ec4343d339 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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
diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h
index 87478c6fbc1..463353e0fc4 100644
--- a/libstdc++-v3/include/debug/functions.h
+++ b/libstdc++-v3/include/debug/functions.h
@@ -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,
diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index b8a971b80e0..a1f7651b1bd 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -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 ------
diff --git a/libstdc++-v3/include/debug/safe_local_iterator.h b/libstdc++-v3/include/debug/safe_local_iterator.h
index 6426ed82afa..82975b70722 100644
--- a/libstdc++-v3/include/debug/safe_local_iterator.h
+++ b/libstdc++-v3/include/debug/safe_local_iterator.h
@@ -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 ------