|
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> |
|
7152 | 7153 | Predicate pred, const T& new_value); |
7153 | 7154 |
|
7154 | 7155 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
7155 | | - class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 7156 | + class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
7156 | 7157 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
7157 | 7158 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
7158 | 7159 | constexpr I |
7159 | 7160 | ranges::replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {}); |
7160 | 7161 | template<@\libconcept{input_range}@ R, class Proj = identity, |
7161 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 7162 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
7162 | 7163 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
7163 | 7164 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<iterator_t<R>, Proj>, const T1*> |
7164 | 7165 | constexpr borrowed_iterator_t<R> |
7165 | 7166 | ranges::replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {}); |
7166 | 7167 |
|
7167 | 7168 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
7168 | | - class Proj = identity, class T1 = projected_value_t<I, Proj>, class T2 = T1> |
| 7169 | + class Proj = identity, class T1 = projected_value_t<I, Proj>, class T2 = iter_value_t<I>> |
7169 | 7170 | requires @\libconcept{indirectly_writable}@<I, const T2&> && |
7170 | 7171 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T1*> |
7171 | 7172 | I ranges::replace(Ep&& exec, I first, S last, |
7172 | 7173 | const T1& old_value, const T2& new_value, Proj proj = {}); |
7173 | 7174 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
7174 | | - class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = T1> |
| 7175 | + class T1 = projected_value_t<iterator_t<R>, Proj>, class T2 = range_value_t<R>> |
7175 | 7176 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T2&> && |
7176 | 7177 | @\libconcept{indirect_binary_predicate}@<ranges::equal_to, |
7177 | 7178 | projected<iterator_t<R>, Proj>, const T1*> |
|
7180 | 7181 | Proj proj = {}); |
7181 | 7182 |
|
7182 | 7183 | template<@\libconcept{input_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity, |
7183 | | - class T = projected_value_t<I, Proj>, |
| 7184 | + class T = iter_value_t<I>, |
7184 | 7185 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
7185 | 7186 | requires @\libconcept{indirectly_writable}@<I, const T&> |
7186 | 7187 | constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {}); |
7187 | | -template<@\libconcept{input_range}@ R, class Proj = identity, class T = projected_value_t<iterator_t<R>, Proj>, |
| 7188 | +template<@\libconcept{input_range}@ R, class Proj = identity, class T = range_value_t<R>, |
7188 | 7189 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
7189 | 7190 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
7190 | 7191 | constexpr borrowed_iterator_t<R> |
7191 | 7192 | ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {}); |
7192 | 7193 |
|
7193 | 7194 | template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S, |
7194 | | - class Proj = identity, class T = projected_value_t<I, Proj>, |
| 7195 | + class Proj = identity, class T = iter_value_t<I>, |
7195 | 7196 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred> |
7196 | 7197 | requires @\libconcept{indirectly_writable}@<I, const T&> |
7197 | 7198 | I ranges::replace_if(Ep&& exec, I first, S last, Pred pred, |
7198 | 7199 | const T& new_value, Proj proj = {}); |
7199 | 7200 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity, |
7200 | | - class T = projected_value_t<iterator_t<R>, Proj>, |
| 7201 | + class T = range_value_t<R>, |
7201 | 7202 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred> |
7202 | 7203 | requires @\libconcept{indirectly_writable}@<iterator_t<R>, const T&> |
7203 | 7204 | borrowed_iterator_t<R> |
|
0 commit comments