From Jason Turner

[alg.fold]

Diff to HTML by rtfpessoa

tmp/tmpmm2ukyme/{from.md → to.md} RENAMED
@@ -1,11 +1,13 @@
1
  ### Fold <a id="alg.fold">[[alg.fold]]</a>
2
 
3
  ``` cpp
4
- template<input_iterator I, sentinel_for<I> S, class T, indirectly-binary-left-foldable<T, I> F>
 
5
  constexpr auto ranges::fold_left(I first, S last, T init, F f);
6
- template<input_range R, class T, indirectly-binary-left-foldable<T, iterator_t<R>> F>
 
7
  constexpr auto ranges::fold_left(R&& r, T init, F f);
8
  ```
9
 
10
  *Returns:*
11
 
@@ -28,14 +30,14 @@ template<input_range R, indirectly-binary-left-foldable<range_value_t<R>, iterat
28
  ``` cpp
29
  ranges::fold_left_first_with_iter(std::move(first), last, f).value
30
  ```
31
 
32
  ``` cpp
33
- template<bidirectional_iterator I, sentinel_for<I> S, class T,
34
  indirectly-binary-right-foldable<T, I> F>
35
  constexpr auto ranges::fold_right(I first, S last, T init, F f);
36
- template<bidirectional_range R, class T,
37
  indirectly-binary-right-foldable<T, iterator_t<R>> F>
38
  constexpr auto ranges::fold_right(R&& r, T init, F f);
39
  ```
40
 
41
  *Effects:* Equivalent to:
@@ -74,14 +76,15 @@ I tail = ranges::prev(ranges::next(first, std::move(last)));
74
  return optional<U>(in_place,
75
  ranges::fold_right(std::move(first), tail, iter_value_t<I>(*tail), std::move(f)));
76
  ```
77
 
78
  ``` cpp
79
- template<input_iterator I, sentinel_for<I> S, class T,
80
  indirectly-binary-left-foldable<T, I> F>
81
  constexpr see below ranges::fold_left_with_iter(I first, S last, T init, F f);
82
- template<input_range R, class T, indirectly-binary-left-foldable<T, iterator_t<R>> F>
 
83
  constexpr see below ranges::fold_left_with_iter(R&& r, T init, F f);
84
  ```
85
 
86
  Let `U` be `decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>`.
87
 
 
1
  ### Fold <a id="alg.fold">[[alg.fold]]</a>
2
 
3
  ``` cpp
4
+ template<input_iterator I, sentinel_for<I> S, class T = iter_value_t<I>,
5
+ indirectly-binary-left-foldable<T, I> F>
6
  constexpr auto ranges::fold_left(I first, S last, T init, F f);
7
+ template<input_range R, class T = range_value_t<R>,
8
+ indirectly-binary-left-foldable<T, iterator_t<R>> F>
9
  constexpr auto ranges::fold_left(R&& r, T init, F f);
10
  ```
11
 
12
  *Returns:*
13
 
 
30
  ``` cpp
31
  ranges::fold_left_first_with_iter(std::move(first), last, f).value
32
  ```
33
 
34
  ``` cpp
35
+ template<bidirectional_iterator I, sentinel_for<I> S, class T = iter_value_t<I>,
36
  indirectly-binary-right-foldable<T, I> F>
37
  constexpr auto ranges::fold_right(I first, S last, T init, F f);
38
+ template<bidirectional_range R, class T = range_value_t<R>,
39
  indirectly-binary-right-foldable<T, iterator_t<R>> F>
40
  constexpr auto ranges::fold_right(R&& r, T init, F f);
41
  ```
42
 
43
  *Effects:* Equivalent to:
 
76
  return optional<U>(in_place,
77
  ranges::fold_right(std::move(first), tail, iter_value_t<I>(*tail), std::move(f)));
78
  ```
79
 
80
  ``` cpp
81
+ template<input_iterator I, sentinel_for<I> S, class T = iter_value_t<I>,
82
  indirectly-binary-left-foldable<T, I> F>
83
  constexpr see below ranges::fold_left_with_iter(I first, S last, T init, F f);
84
+ template<input_range R, class T = range_value_t<R>,
85
+ indirectly-binary-left-foldable<T, iterator_t<R>> F>
86
  constexpr see below ranges::fold_left_with_iter(R&& r, T init, F f);
87
  ```
88
 
89
  Let `U` be `decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>`.
90