Skip to content

Commit 6f6ace2

Browse files
eisenwavetkoeppe
authored andcommitted
LWG4297 Missing permutable constraint for iterator overloads in Parallel Range Algorithms
1 parent a35c61f commit 6f6ace2

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

‎source/algorithms.tex‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2355,7 +2355,8 @@
23552355

23562356
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
23572357
class Proj = identity, class T = projected_value_t<I, Proj>>
2358-
requires @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T*>
2358+
requires @\libconcept{permutable}@<I> &&
2359+
@\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T*>
23592360
subrange<I> remove(Ep&& exec, I first, S last, const T& value,
23602361
Proj proj = {}); // freestanding-deleted
23612362
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
@@ -2377,6 +2378,7 @@
23772378

23782379
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
23792380
class Proj = identity, @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred>
2381+
requires @\libconcept{permutable}@<I>
23802382
subrange<I>
23812383
remove_if(Ep&& exec, I first, S last, Pred pred, Proj proj = {}); // freestanding-deleted
23822384
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
@@ -3217,6 +3219,7 @@
32173219

32183220
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
32193221
class Proj = identity, @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred>
3222+
requires @\libconcept{permutable}@<I>
32203223
subrange<I>
32213224
partition(Ep&& exec, I first, S last, Pred pred, Proj proj = {}); // freestanding-deleted
32223225
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
@@ -7561,7 +7564,8 @@
75617564

75627565
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
75637566
class Proj = identity, class T = projected_value_t<I, Proj>>
7564-
requires @\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T*>
7567+
requires @\libconcept{permutable}@<I> &&
7568+
@\libconcept{indirect_binary_predicate}@<ranges::equal_to, projected<I, Proj>, const T*>
75657569
subrange<I>
75667570
ranges::remove(Ep&& exec, I first, S last, const T& value, Proj proj = {});
75677571
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
@@ -7583,6 +7587,7 @@
75837587

75847588
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
75857589
class Proj = identity, @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred>
7590+
requires @\libconcept{permutable}@<I>
75867591
subrange<I>
75877592
ranges::remove_if(Ep&& exec, I first, S last, Pred pred, Proj proj = {});
75887593
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
@@ -9696,6 +9701,7 @@
96969701

96979702
template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S,
96989703
class Proj = identity, @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred>
9704+
requires @\libconcept{permutable}@<I>
96999705
subrange<I> ranges::partition(Ep&& exec, I first, S last, Pred pred, Proj proj = {});
97009706
template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-access-range}@ R, class Proj = identity,
97019707
@\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred>

0 commit comments

Comments
 (0)