@@ -266,7 +266,7 @@ Sequence Search and Comparison
266266 namespace oneapi::dpl::ranges {
267267
268268 // equal
269- template<typename ExecutionPolicy, std::ranges::random_access_range R1,
269+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
270270 std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
271271 typename Proj1 = std::identity, typename Proj2 = std::identity>
272272 requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -277,7 +277,7 @@ Sequence Search and Comparison
277277 Proj1 proj1 = {}, Proj2 proj2 = {});
278278
279279 // mismatch
280- template<typename ExecutionPolicy, std::ranges::random_access_range R1,
280+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
281281 std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
282282 typename Proj1 = std::identity, typename Proj2 = std::identity>
283283 requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -288,10 +288,9 @@ Sequence Search and Comparison
288288 std::ranges::borrowed_iterator_t<R2>>
289289 mismatch (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {},
290290 Proj1 proj1 = {}, Proj2 proj2 = {});
291-
292291
293292 // find_end
294- template<typename ExecutionPolicy, std::ranges::random_access_range R1,
293+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
295294 std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
296295 typename Proj1 = std::identity, typename Proj2 = std::identity>
297296 requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -303,7 +302,7 @@ Sequence Search and Comparison
303302 Proj1 proj1 = {}, Proj2 proj2 = {});
304303
305304 // search
306- template<typename ExecutionPolicy, std::ranges::random_access_range R1,
305+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
307306 std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
308307 typename Proj1 = std::identity, typename Proj2 = std::identity>
309308 requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -315,7 +314,7 @@ Sequence Search and Comparison
315314 Proj1 proj1 = {}, Proj2 proj2 = {});
316315
317316 // search_n
318- template<typename ExecutionPolicy, std::ranges::random_access_range R,
317+ template <typename ExecutionPolicy, std::ranges::random_access_range R,
319318 typename Pred = std::ranges::equal_to, typename Proj = std::identity,
320319 typename T = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>
321320 requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -325,6 +324,19 @@ Sequence Search and Comparison
325324 search_n (ExecutionPolicy&& pol, R&& r, std::ranges::range_difference_t<R> count,
326325 const T& value, Pred pred = {}, Proj proj = {});
327326
327+ // lexicographical_compare
328+ template <typename ExecutionPolicy, std::ranges::random_access_range R1,
329+ std::ranges::random_access_range R2, typename Proj1 = std::identity,
330+ typename Proj2 = std::identity,
331+ std::indirect_strict_weak_order< std::projected<std::ranges::iterator_t<R1>, Proj1>,
332+ std::projected<std::ranges::iterator_t<R2>, Proj2> >
333+ Comp = std::ranges::less>
334+ requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
335+ std::ranges::sized_range<R1> && std::ranges::sized_range<R2> &&
336+ std::indirectly_comparable< std::ranges::iterator_t<R1>, std::ranges::iterator_t<R2>,
337+ Comp, Proj1, Proj2 >
338+ bool lexicographical_compare (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Comp comp = {},
339+ Proj1 proj1 = {}, Proj2 proj2 = {});
328340 }
329341
330342 Sorting and Merge
0 commit comments