[gcc/devel/ranger] libstdc++: Add default-initializers to views (LWG 3364)

Aldy Hernandez aldyh@gcc.gnu.org
Wed Jun 17 19:02:26 GMT 2020


https://gcc.gnu.org/g:7433536b3d864c0d8d5180348690e1c280a3eaf2

commit 7433536b3d864c0d8d5180348690e1c280a3eaf2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Feb 19 22:00:14 2020 +0000

    libstdc++: Add default-initializers to views (LWG 3364)
    
            * include/std/ranges (take_while_view, drop_view, drop_while_view)
            (elements_view:_Iterator): Initialize data members (LWG 3364).

Diff:
---
 libstdc++-v3/ChangeLog          |  3 +++
 libstdc++-v3/include/std/ranges | 10 +++++-----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 622c2948eab..ef91b80ef45 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,8 @@
 2020-02-19  Jonathan Wakely  <jwakely@redhat.com>
 
+	* include/std/ranges (take_while_view, drop_view, drop_while_view)
+	(elements_view:_Iterator): Initialize data members (LWG 3364).
+
 	* libsupc++/compare (three_way_comparable): Remove always-false check
 	that should have been removed with weak_equality (P1959R0).
 	(three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index b348ba2cfcb..7a66491f2e4 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -2008,7 +2008,7 @@ namespace views
 	  { return __y._M_end == __x || !std::__invoke(*__y._M_pred, *__x); }
 	};
 
-      _Vp _M_base;
+      _Vp _M_base = _Vp();
       __detail::__box<_Pred> _M_pred;
 
     public:
@@ -2068,8 +2068,8 @@ namespace views
     class drop_view : public view_interface<drop_view<_Vp>>
     {
     private:
-      _Vp _M_base;
-      range_difference_t<_Vp> _M_count;
+      _Vp _M_base = _Vp();
+      range_difference_t<_Vp> _M_count = 0;
 
     public:
       drop_view() = default;
@@ -2147,7 +2147,7 @@ namespace views
     class drop_while_view : public view_interface<drop_while_view<_Vp, _Pred>>
     {
     private:
-      _Vp _M_base;
+      _Vp _M_base = _Vp();
       __detail::__box<_Pred> _M_pred;
 
     public:
@@ -3179,7 +3179,7 @@ namespace views
 	{
 	  using _Base = conditional_t<_Const, const _Vp, _Vp>;
 
-	  iterator_t<_Base> _M_current;
+	  iterator_t<_Base> _M_current = iterator_t<_Base>();
 
 	  friend _Iterator<!_Const>;


More information about the Libstdc++-cvs mailing list