From Jason Turner

[alg.find.last]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpf93tc86o/{from.md → to.md} +32 -2
tmp/tmpf93tc86o/{from.md → to.md} RENAMED
@@ -1,26 +1,56 @@
1
  ### Find last <a id="alg.find.last">[[alg.find.last]]</a>
2
 
3
  ``` cpp
4
- template<forward_iterator I, sentinel_for<I> S, class T, class Proj = identity>
 
5
  requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
6
  constexpr subrange<I> ranges::find_last(I first, S last, const T& value, Proj proj = {});
7
- template<forward_range R, class T, class Proj = identity>
 
8
  requires indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
9
  constexpr borrowed_subrange_t<R> ranges::find_last(R&& r, const T& value, Proj proj = {});
 
 
 
 
 
 
 
 
 
 
 
10
  template<forward_iterator I, sentinel_for<I> S, class Proj = identity,
11
  indirect_unary_predicate<projected<I, Proj>> Pred>
12
  constexpr subrange<I> ranges::find_last_if(I first, S last, Pred pred, Proj proj = {});
13
  template<forward_range R, class Proj = identity,
14
  indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
15
  constexpr borrowed_subrange_t<R> ranges::find_last_if(R&& r, Pred pred, Proj proj = {});
 
 
 
 
 
 
 
 
 
16
  template<forward_iterator I, sentinel_for<I> S, class Proj = identity,
17
  indirect_unary_predicate<projected<I, Proj>> Pred>
18
  constexpr subrange<I> ranges::find_last_if_not(I first, S last, Pred pred, Proj proj = {});
19
  template<forward_range R, class Proj = identity,
20
  indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
21
  constexpr borrowed_subrange_t<R> ranges::find_last_if_not(R&& r, Pred pred, Proj proj = {});
 
 
 
 
 
 
 
 
22
  ```
23
 
24
  Let E be:
25
 
26
  - `bool(invoke(proj, *i) == value)` for `ranges::find_last`;
 
1
  ### Find last <a id="alg.find.last">[[alg.find.last]]</a>
2
 
3
  ``` cpp
4
+ template<forward_iterator I, sentinel_for<I> S, class Proj = identity,
5
+ class T = projected_value_t<I, Proj>>
6
  requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
7
  constexpr subrange<I> ranges::find_last(I first, S last, const T& value, Proj proj = {});
8
+ template<forward_range R, class Proj = identity,
9
+ class T = projected_value_t<iterator_t<R>, Proj>>
10
  requires indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
11
  constexpr borrowed_subrange_t<R> ranges::find_last(R&& r, const T& value, Proj proj = {});
12
+
13
+ template<execution-policy Ep, random_access_iterator I, sized_sentinel_for<I> S,
14
+ class Proj = identity, class T = projected_value_t<I, Proj>>
15
+ requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
16
+ subrange<I> ranges::find_last(Ep&& exec, I first, S last, const T& value, Proj proj = {});
17
+ template<execution-policy Ep, sized-random-access-range R, class Proj = identity,
18
+ class T = projected_value_t<iterator_t<R>, Proj>>
19
+ requires
20
+ indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
21
+ borrowed_subrange_t<R> ranges::find_last(Ep&& exec, R&& r, const T& value, Proj proj = {});
22
+
23
  template<forward_iterator I, sentinel_for<I> S, class Proj = identity,
24
  indirect_unary_predicate<projected<I, Proj>> Pred>
25
  constexpr subrange<I> ranges::find_last_if(I first, S last, Pred pred, Proj proj = {});
26
  template<forward_range R, class Proj = identity,
27
  indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
28
  constexpr borrowed_subrange_t<R> ranges::find_last_if(R&& r, Pred pred, Proj proj = {});
29
+
30
+ template<execution-policy Ep, random_access_iterator I, sized_sentinel_for<I> S,
31
+ class Proj = identity, indirect_unary_predicate<projected<I, Proj>> Pred>
32
+ subrange<I> ranges::find_last_if(Ep&& exec, I first, S last, Pred pred, Proj proj = {});
33
+ template<execution-policy Ep, sized-random-access-range R,
34
+ class Proj = identity,
35
+ indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
36
+ borrowed_subrange_t<R> ranges::find_last_if(Ep&& exec, R&& r, Pred pred, Proj proj = {});
37
+
38
  template<forward_iterator I, sentinel_for<I> S, class Proj = identity,
39
  indirect_unary_predicate<projected<I, Proj>> Pred>
40
  constexpr subrange<I> ranges::find_last_if_not(I first, S last, Pred pred, Proj proj = {});
41
  template<forward_range R, class Proj = identity,
42
  indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
43
  constexpr borrowed_subrange_t<R> ranges::find_last_if_not(R&& r, Pred pred, Proj proj = {});
44
+
45
+ template<execution-policy Ep, random_access_iterator I, sized_sentinel_for<I> S,
46
+ class Proj = identity,
47
+ indirect_unary_predicate<projected<I, Proj>> Pred>
48
+ subrange<I> ranges::find_last_if_not(Ep&& exec, I first, S last, Pred pred, Proj proj = {});
49
+ template<execution-policy Ep, sized-random-access-range R, class Proj = identity,
50
+ indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
51
+ borrowed_subrange_t<R> ranges::find_last_if_not(Ep&& exec, R&& r, Pred pred, Proj proj = {});
52
  ```
53
 
54
  Let E be:
55
 
56
  - `bool(invoke(proj, *i) == value)` for `ranges::find_last`;