[gcc(refs/users/ppalka/heads/libstdcxx-constrained-algos-adaptors)] std-qualify addressof, invoke and get

Patrick Palka ppalka@gcc.gnu.org
Thu Feb 6 23:24:00 GMT 2020


https://gcc.gnu.org/g:9f194e00d3f6d0e430fe40be1cb5cb6ba653adc6

commit 9f194e00d3f6d0e430fe40be1cb5cb6ba653adc6
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu Feb 6 17:54:41 2020 -0500

    std-qualify addressof, invoke and get

Diff:
---
 libstdc++-v3/include/std/ranges | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 8875c33..f808c9d 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -38,12 +38,13 @@
 
 #if __cpp_lib_concepts
 
+#include <bits/refwrap.h>
 #include <compare>
-#include <functional> // std::ref
 #include <initializer_list>
 #include <iterator>
 #include <limits>
 #include <optional>
+#include <tuple>
 
 /**
  * @defgroup ranges Ranges
@@ -1089,7 +1090,7 @@ namespace views
 	  && requires { _S_fun(declval<_Tp>()); }
 	constexpr
 	ref_view(_Tp&& __t)
-	  : _M_r(addressof(static_cast<_Range&>(std::forward<_Tp>(__t))))
+	  : _M_r(std::__addressof(static_cast<_Range&>(std::forward<_Tp>(__t))))
 	{ }
 
       constexpr _Range&
@@ -1296,7 +1297,7 @@ namespace views
 	constexpr
 	_Iterator(filter_view& __parent, iterator_t<_Vp> __current)
 	  : _M_current(std::move(__current)),
-	    _M_parent(addressof(__parent))
+	    _M_parent(std::__addressof(__parent))
 	{ }
 
 	constexpr iterator_t<_Vp>
@@ -1344,7 +1345,7 @@ namespace views
 	{
 	  do
 	    --_M_current;
-	  while (!invoke(*_M_parent->_M_pred, *_M_current));
+	  while (!std::__invoke(*_M_parent->_M_pred, *_M_current));
 	  return *this;
 	}
 
@@ -1501,7 +1502,8 @@ namespace views
 
 	  static constexpr decltype(auto)
 	  __iter_move(const _Iterator& __i = {})
-	    noexcept(noexcept(invoke(*__i._M_parent->_M_fun, *__i._M_current)))
+	    noexcept(noexcept(std::__invoke(*__i._M_parent->_M_fun,
+					    *__i._M_current)))
 	  {
 	    if constexpr (is_lvalue_reference_v<decltype(*__i)>)
 	      return std::move(*__i);
@@ -1523,7 +1525,8 @@ namespace views
 
 	  constexpr
 	  _Iterator(_Parent& __parent, iterator_t<_Base> __current)
-	    : _M_current(std::move(__current)), _M_parent(addressof(__parent))
+	    : _M_current(std::move(__current)),
+	      _M_parent(std::__addressof(__parent))
 	  { }
 
 	  constexpr
@@ -1544,7 +1547,7 @@ namespace views
 
 	  constexpr decltype(auto)
 	  operator*() const
-	  { return invoke(*_M_parent->_M_fun, *_M_current); }
+	  { return std::__invoke(*_M_parent->_M_fun, *_M_current); }
 
 	  constexpr _Iterator&
 	  operator++()
@@ -1597,7 +1600,7 @@ namespace views
 	  constexpr decltype(auto)
 	  operator[](difference_type __n) const
 	    requires random_access_range<_Base>
-	  { return invoke(*_M_parent->_M_fun, _M_current[__n]); }
+	  { return std::__invoke(*_M_parent->_M_fun, _M_current[__n]); }
 
 	  friend constexpr bool
 	  operator==(const _Iterator& __x, const _Iterator& __y)
@@ -1970,7 +1973,7 @@ namespace views
 
 	  friend constexpr bool
 	  operator==(const iterator_t<_Base>& __x, const _Sentinel& __y)
-	  { return __y._M_end == __x || !invoke(*__y._M_pred, *__x); }
+	  { return __y._M_end == __x || !std::__invoke(*__y._M_pred, *__x); }
 	};
 
       _Vp _M_base;
@@ -2008,12 +2011,12 @@ namespace views
       constexpr auto
       end() requires (!__detail::__simple_view<_Vp>)
       { return _Sentinel<false>(ranges::end(_M_base),
-				addressof(*_M_pred)); }
+				std::__addressof(*_M_pred)); }
 
       constexpr auto
       end() const requires range<const _Vp>
       { return _Sentinel<true>(ranges::end(_M_base),
-			       addressof(*_M_pred)); }
+			       std::__addressof(*_M_pred)); }
     };
 
   template<typename _Range, typename _Pred>
@@ -2263,7 +2266,8 @@ namespace views
 	  // iterator_t<_Base> here, a possible defect in the spec?
 	  constexpr
 	  _Iterator(_Parent& __parent, iterator_t<_Base> __outer)
-	    : _M_outer(std::move(__outer)), _M_parent(addressof(__parent))
+	    : _M_outer(std::move(__outer)),
+	      _M_parent(std::__addressof(__parent))
 	  { _M_satisfy(); }
 
 	  constexpr
@@ -2592,7 +2596,8 @@ namespace views
 	  constexpr
 	  _OuterIter(_Parent& __parent, iterator_t<_Base> __current)
 	    requires forward_range<_Base>
-	    : _M_parent(addressof(__parent)), _M_current(std::move(__current))
+	    : _M_parent(std::__addressof(__parent)),
+	      _M_current(std::move(__current))
 	  { }
 
 	  constexpr
@@ -3109,7 +3114,8 @@ namespace views
 	requires _Nm < tuple_size_v<_Tp>;
 	typename tuple_element_t<_Nm, _Tp>;
 	// XXX: we applied P3323 here
-	{ get<_Nm>(__t) } -> convertible_to<const tuple_element_t<_Nm, _Tp>&>;
+	{ std::get<_Nm>(__t) }
+	  -> convertible_to<const tuple_element_t<_Nm, _Tp>&>;
       };
   }
 
@@ -3201,7 +3207,7 @@ namespace views
 
 	constexpr decltype(auto)
 	  operator*() const
-	{ return get<_Nm>(*_M_current); }
+	{ return std::get<_Nm>(*_M_current); }
 
 	constexpr _Iterator&
 	operator++()
@@ -3256,7 +3262,7 @@ namespace views
 	constexpr decltype(auto)
 	operator[](difference_type __n) const
 	  requires random_access_range<_Base>
-	{ return get<_Nm>(*(_M_current + __n)); }
+	{ return std::get<_Nm>(*(_M_current + __n)); }
 
 	friend constexpr bool
 	operator==(const _Iterator& __x, const _Iterator& __y)



More information about the Libstdc++-cvs mailing list