summary refs log tree commit diff
path: root/pkgs/development/libraries/range-v3/gcc10.patch
blob: caebf0a6316299813a3797154376b5e7ea0563ec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From a91f0e1be27a31c446452a753001d4518ef83a6b Mon Sep 17 00:00:00 2001
From: Eric Niebler <eniebler@boost.org>
Date: Mon, 17 Aug 2020 17:48:09 -0700
Subject: [PATCH] work around premature instantiation problem on gcc; fixes
 #1545

---
 include/range/v3/view/chunk.hpp |  6 +++---
 include/range/v3/view/split.hpp | 26 +++++++++++++-------------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/include/range/v3/view/chunk.hpp b/include/range/v3/view/chunk.hpp
index 0c03cf1eb..b8df13303 100644
--- a/include/range/v3/view/chunk.hpp
+++ b/include/range/v3/view/chunk.hpp
@@ -313,8 +313,8 @@ namespace ranges
 
             public:
                 inner_view() = default;
-                constexpr explicit inner_view(chunk_view_ & view) noexcept
-                  : rng_{&view}
+                constexpr explicit inner_view(chunk_view_ * view) noexcept
+                  : rng_{view}
                 {}
                 CPP_auto_member
                 constexpr auto CPP_fun(size)()(
@@ -338,7 +338,7 @@ namespace ranges
             constexpr inner_view read() const
             {
                 RANGES_EXPECT(!done());
-                return inner_view{*rng_};
+                return inner_view{rng_};
             }
             constexpr bool done() const
             {
diff --git a/include/range/v3/view/split.hpp b/include/range/v3/view/split.hpp
index facf1b37f..496220e4a 100644
--- a/include/range/v3/view/split.hpp
+++ b/include/range/v3/view/split.hpp
@@ -389,19 +389,19 @@ namespace ranges
             split_outer_iterator() = default;
 
             CPP_member
-            constexpr explicit CPP_ctor(split_outer_iterator)(Parent & parent)(
+            constexpr explicit CPP_ctor(split_outer_iterator)(Parent * parent)(
                 /// \pre
                 requires (!forward_range<Base>))
-              : parent_(&parent)
+              : parent_(parent)
             {}
 
             CPP_member
-            constexpr CPP_ctor(split_outer_iterator)(Parent & parent,
+            constexpr CPP_ctor(split_outer_iterator)(Parent * parent,
                                                      iterator_t<Base> current)(
                 /// \pre
                 requires forward_range<Base>)
               : Current{std::move(current)}
-              , parent_(&parent)
+              , parent_(parent)
             {}
 
             template(bool Other)(
@@ -519,7 +519,7 @@ namespace ranges
                                               ranges::equal_to> &&
         (forward_range<V> || detail::tiny_range<Pattern>)
 #endif
-            struct RANGES_EMPTY_BASES split_view
+    struct RANGES_EMPTY_BASES split_view
       : view_interface<split_view<V, Pattern>, is_finite<V>::value ? finite : unknown>
       , private detail::split_view_base<iterator_t<V>>
     {
@@ -537,17 +537,17 @@ namespace ranges
 #if RANGES_CXX_IF_CONSTEXPR < RANGES_CXX_IF_CONSTEXPR_17
         outer_iterator<simple_view<V>()> begin_(std::true_type)
         {
-            return outer_iterator<simple_view<V>()>{*this, ranges::begin(base_)};
+            return outer_iterator<simple_view<V>()>{this, ranges::begin(base_)};
         }
         outer_iterator<false> begin_(std::false_type)
         {
             this->curr_ = ranges::begin(base_);
-            return outer_iterator<false>{*this};
+            return outer_iterator<false>{this};
         }
 
         outer_iterator<simple_view<V>()> end_(std::true_type) const
         {
-            return outer_iterator<true>{*this, ranges::end(base_)};
+            return outer_iterator<true>{this, ranges::end(base_)};
         }
         default_sentinel_t end_(std::false_type) const
         {
@@ -580,11 +580,11 @@ namespace ranges
         {
 #if RANGES_CXX_IF_CONSTEXPR >= RANGES_CXX_IF_CONSTEXPR_17
             if constexpr(forward_range<V>)
-                return outer_iterator<simple_view<V>()>{*this, ranges::begin(base_)};
+                return outer_iterator<simple_view<V>()>{this, ranges::begin(base_)};
             else
             {
                 this->curr_ = ranges::begin(base_);
-                return outer_iterator<false>{*this};
+                return outer_iterator<false>{this};
             }
 #else
             return begin_(meta::bool_<forward_range<V>>{});
@@ -596,7 +596,7 @@ namespace ranges
                 /// \pre
                 requires forward_range<V> && forward_range<const V>)
         {
-            return {*this, ranges::begin(base_)};
+            return {this, ranges::begin(base_)};
         }
         CPP_member
         constexpr auto end() //
@@ -604,14 +604,14 @@ namespace ranges
                 /// \pre
                 requires forward_range<V> && common_range<V>)
         {
-            return outer_iterator<simple_view<V>()>{*this, ranges::end(base_)};
+            return outer_iterator<simple_view<V>()>{this, ranges::end(base_)};
         }
         constexpr auto end() const
         {
 #if RANGES_CXX_IF_CONSTEXPR >= RANGES_CXX_IF_CONSTEXPR_17
             if constexpr(forward_range<V> && forward_range<const V> &&
                          common_range<const V>)
-                return outer_iterator<true>{*this, ranges::end(base_)};
+                return outer_iterator<true>{this, ranges::end(base_)};
             else
                 return default_sentinel;
 #else