|
2097 | 2097 |
|
2098 | 2098 | namespace ranges { |
2099 | 2099 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
2100 | | - class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 2100 | + class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
2101 | 2101 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
2102 | 2102 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
2103 | 2103 | constexpr I |
2104 | 2104 | replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {}); |
2105 | 2105 | template<@\libconcept{input_range}@ R, class Proj = identity, |
2106 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 2106 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
2107 | 2107 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
2108 | 2108 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, |
2109 | 2109 | projected<iterator_t<R>, Proj>, const T1*> |
2110 | 2110 | constexpr borrowed_iterator_t<R> |
2111 | 2111 | replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {}); |
2112 | 2112 |
|
2113 | 2113 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
2114 | | - class Proj = identity, class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 2114 | + class Proj = identity, |
| 2115 | + class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
2115 | 2116 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
2116 | 2117 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
2117 | 2118 | I replace(Ep&& exec, I first, S last, |
2118 | 2119 | const T1& old_value, const T2& new_value, Proj proj = {}); // freestanding-deleted |
2119 | 2120 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
2120 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 2121 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
2121 | 2122 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
2122 | 2123 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, |
2123 | 2124 | projected<iterator_t<R>, Proj>, const T1*> |
|
2126 | 2127 | Proj proj = {}); // freestanding-deleted |
2127 | 2128 |
|
2128 | 2129 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
2129 | | - class T = projected_value_t<I, Proj>, |
| 2130 | + class T = iter_value_t<I>, |
2130 | 2131 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
2131 | 2132 | requires @\libconcept{indirectly_writable}@<I, const T&> |
2132 | 2133 | constexpr I replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {}); |
2133 | | - template<@\libconcept{input_range}@ R, class Proj = identity, class T = projected_value_t<I, Proj>, |
| 2134 | + template<@\libconcept{input_range}@ R, class Proj = identity, class T = range_value_t<R>, |
2134 | 2135 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
2135 | 2136 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
2136 | 2137 | constexpr borrowed_iterator_t<R> |
2137 | 2138 | replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {}); |
2138 | 2139 |
|
2139 | 2140 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
2140 | | - class Proj = identity, class T = projected_value_t<I, Proj>, |
| 2141 | + class Proj = identity, class T = iter_value_t<I>, |
2141 | 2142 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
2142 | 2143 | requires @\libconcept{indirectly_writable}@<I, const T&> |
2143 | 2144 | I replace_if(Ep&& exec, I first, S last, Pred pred, |
2144 | 2145 | const T& new_value, Proj proj = {}); // freestanding-deleted |
2145 | 2146 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
2146 | | - class T = projected_value_t<iterator_t<R>, Proj>, |
| 2147 | + class T = range_value_t<R>, |
2147 | 2148 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
2148 | 2149 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
2149 | 2150 | borrowed_iterator_t<R> |
|
7149 | 7150 | Predicate pred, const T& new_value); |
7150 | 7151 |
|
7151 | 7152 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
7152 | | - class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 7153 | + class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
7153 | 7154 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
7154 | 7155 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
7155 | 7156 | constexpr I |
7156 | 7157 | ranges::replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {}); |
7157 | 7158 | template<@\libconcept{input_range}@ R, class Proj = identity, |
7158 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 7159 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
7159 | 7160 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
7160 | 7161 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<iterator_t<R>, Proj>, const T1*> |
7161 | 7162 | constexpr borrowed_iterator_t<R> |
7162 | 7163 | ranges::replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {}); |
7163 | 7164 |
|
7164 | 7165 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
7165 | | - class Proj = identity, class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 7166 | + class Proj = identity, class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
7166 | 7167 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
7167 | 7168 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
7168 | 7169 | I ranges::replace(Ep&& exec, I first, S last, |
7169 | 7170 | const T1& old_value, const T2& new_value, Proj proj = {}); |
7170 | 7171 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
7171 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 7172 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
7172 | 7173 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
7173 | 7174 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, |
7174 | 7175 | projected<iterator_t<R>, Proj>, const T1*> |
|
7177 | 7178 | Proj proj = {}); |
7178 | 7179 |
|
7179 | 7180 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
7180 | | - class T = projected_value_t<I, Proj>, |
| 7181 | + class T = iter_value_t<I>, |
7181 | 7182 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
7182 | 7183 | requires @\libconcept{indirectly_writable}@<I, const T&> |
7183 | 7184 | constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {}); |
7184 | | -template<@\libconcept{input_range}@ R, class Proj = identity, class T = projected_value_t<iterator_t<R>, Proj>, |
| 7185 | +template<@\libconcept{input_range}@ R, class Proj = identity, class T = range_value_t<R>, |
7185 | 7186 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
7186 | 7187 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
7187 | 7188 | constexpr borrowed_iterator_t<R> |
7188 | 7189 | ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {}); |
7189 | 7190 |
|
7190 | 7191 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
7191 | | - class Proj = identity, class T = projected_value_t<I, Proj>, |
| 7192 | + class Proj = identity, class T = iter_value_t<I>, |
7192 | 7193 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
7193 | 7194 | requires @\libconcept{indirectly_writable}@<I, const T&> |
7194 | 7195 | I ranges::replace_if(Ep&& exec, I first, S last, Pred pred, |
7195 | 7196 | const T& new_value, Proj proj = {}); |
7196 | 7197 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
7197 | | - class T = projected_value_t<iterator_t<R>, Proj>, |
| 7198 | + class T = range_value_t<R>, |
7198 | 7199 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
7199 | 7200 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
7200 | 7201 | borrowed_iterator_t<R> |
|
0 commit comments