@@ -37,6 +37,18 @@ The following differences to the standard C++ range algorithms apply:
37
37
Except for these differences, the signatures of parallel range algorithms correspond to the working draft
38
38
of the next edition of the C++ standard (C++26).
39
39
40
+ Auxiliary Definitions
41
+ +++++++++++++++++++++
42
+
43
+ The following auxiliary entities are only defined for the purpose of exposition, to aid the specification
44
+ of parallel range algorithms.
45
+
46
+ .. code :: cpp
47
+
48
+ // C++20 analogue of std::projected_value_t; exposition only
49
+ template<typename I, typename Proj>
50
+ using /*projected-value-type*/ = std::remove_cvref_t<std::invoke_result_t<Proj&, std::iter_value_t<I>&>>;
51
+
40
52
Whole Sequence Operations
41
53
+++++++++++++++++++++++++
42
54
@@ -82,7 +94,7 @@ Whole Sequence Operations
82
94
// count
83
95
template <typename ExecutionPolicy, std::ranges::random_access_range R,
84
96
typename Proj = std::identity,
85
- typename T = std::projected_value_t <std::ranges::iterator_t<R>, Proj>>
97
+ typename T = /*projected-value-type*/ <std::ranges::iterator_t<R>, Proj>>
86
98
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
87
99
std::ranges::sized_range<R> &&
88
100
std::indirect_binary_predicate< std::ranges::equal_to,
@@ -114,7 +126,7 @@ Element Search Operations
114
126
// find
115
127
template <typename ExecutionPolicy, std::ranges::random_access_range R,
116
128
typename Proj = std::identity,
117
- typename T = std::projected_value_t <std::ranges::iterator_t<R>, Proj>>
129
+ typename T = /*projected-value-type*/ <std::ranges::iterator_t<R>, Proj>>
118
130
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
119
131
std::ranges::sized_range<R> &&
120
132
std::indirect_binary_predicate< std::ranges::equal_to,
@@ -209,7 +221,7 @@ Sequence Search and Comparison
209
221
// search_n
210
222
template<typename ExecutionPolicy, std::ranges::random_access_range R,
211
223
typename Pred = std::ranges::equal_to, typename Proj = std::identity,
212
- typename T = std::projected_value_t <std::ranges::iterator_t<R>, Proj>>
224
+ typename T = /*projected-value-type*/ <std::ranges::iterator_t<R>, Proj>>
213
225
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
214
226
std::ranges::sized_range<R> &&
215
227
std::indirectly_comparable< std::ranges::iterator_t<R>, const T*, Pred, Proj >
0 commit comments