From Jason Turner

[iterator.synopsis]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpgepokl1r/{from.md → to.md} +10 -8
tmp/tmpgepokl1r/{from.md → to.md} RENAMED
@@ -52,10 +52,11 @@ namespace std {
52
  // [iterator.concepts], iterator concepts
53
  // [iterator.concept.readable], concept indirectly_readable
54
  template<class In>
55
  concept indirectly_readable = see below; // freestanding
56
 
 
57
  template<indirectly_readable T>
58
  using indirect-value-t = see below; // exposition only
59
 
60
  template<indirectly_readable T>
61
  using iter_common_reference_t = // freestanding
@@ -136,14 +137,15 @@ namespace std {
136
  requires (indirectly_readable<Is> && ...) && invocable<F, iter_reference_t<Is>...>
137
  using indirect_result_t = invoke_result_t<F, iter_reference_t<Is>...>; // freestanding
138
 
139
  // [projected], projected
140
  template<indirectly_readable I, indirectly_regular_unary_invocable<I> Proj>
141
- struct projected; // freestanding
142
 
143
- template<weakly_incrementable I, class Proj>
144
- struct incrementable_traits<projected<I, Proj>>; // freestanding
 
145
 
146
  // [alg.req], common algorithm requirements
147
  // [alg.req.ind.move], concept indirectly_movable
148
  template<class In, class Out>
149
  concept indirectly_movable = see below; // freestanding
@@ -288,11 +290,11 @@ namespace std {
288
  template<class Iterator>
289
  constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i); // freestanding
290
 
291
  template<class Iterator1, class Iterator2>
292
  requires (!sized_sentinel_for<Iterator1, Iterator2>)
293
- constexpr bool disable_sized_sentinel_for<reverse_iterator<Iterator1>, // freestanding
294
  reverse_iterator<Iterator2>> = true;
295
 
296
  // [insert.iterators], insert iterators
297
  template<class Container> class back_insert_iterator; // freestanding
298
  template<class Container>
@@ -378,11 +380,11 @@ namespace std {
378
  template<class Iterator>
379
  constexpr move_iterator<Iterator> make_move_iterator(Iterator i); // freestanding
380
 
381
  template<class Iterator1, class Iterator2>
382
  requires (!sized_sentinel_for<Iterator1, Iterator2>)
383
- constexpr bool disable_sized_sentinel_for<move_iterator<Iterator1>, // freestanding
384
  move_iterator<Iterator2>> = true;
385
 
386
  template<semiregular S> class move_sentinel; // freestanding
387
 
388
  // [iterators.common], common iterators
@@ -466,15 +468,15 @@ namespace std {
466
  ssize(const C& c)
467
  -> common_type_t<ptrdiff_t, make_signed_t<decltype(c.size())>>; // freestanding
468
  template<class T, ptrdiff_t N> constexpr ptrdiff_t
469
  ssize(const T (&array)[N]) noexcept; // freestanding
470
 
471
- template<class C> [[nodiscard]] constexpr auto
472
  empty(const C& c) -> decltype(c.empty()); // freestanding
473
- template<class T, size_t N> [[nodiscard]] constexpr bool
474
  empty(const T (&array)[N]) noexcept; // freestanding
475
- template<class E> [[nodiscard]] constexpr bool
476
  empty(initializer_list<E> il) noexcept; // freestanding
477
 
478
  template<class C> constexpr auto data(C& c) -> decltype(c.data()); // freestanding
479
  template<class C> constexpr auto data(const C& c) -> decltype(c.data()); // freestanding
480
  template<class T, size_t N> constexpr T* data(T (&array)[N]) noexcept; // freestanding
 
52
  // [iterator.concepts], iterator concepts
53
  // [iterator.concept.readable], concept indirectly_readable
54
  template<class In>
55
  concept indirectly_readable = see below; // freestanding
56
 
57
+ // [indirectcallable.traits], indirect callable traits
58
  template<indirectly_readable T>
59
  using indirect-value-t = see below; // exposition only
60
 
61
  template<indirectly_readable T>
62
  using iter_common_reference_t = // freestanding
 
137
  requires (indirectly_readable<Is> && ...) && invocable<F, iter_reference_t<Is>...>
138
  using indirect_result_t = invoke_result_t<F, iter_reference_t<Is>...>; // freestanding
139
 
140
  // [projected], projected
141
  template<indirectly_readable I, indirectly_regular_unary_invocable<I> Proj>
142
+ using projected = see below; // freestanding
143
 
144
+ template<indirectly_readable I, indirectly_regular_unary_invocable<I> Proj>
145
+ using projected_value_t = // freestanding
146
+ remove_cvref_t<invoke_result_t<Proj&, iter_value_t<I>&>>;
147
 
148
  // [alg.req], common algorithm requirements
149
  // [alg.req.ind.move], concept indirectly_movable
150
  template<class In, class Out>
151
  concept indirectly_movable = see below; // freestanding
 
290
  template<class Iterator>
291
  constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i); // freestanding
292
 
293
  template<class Iterator1, class Iterator2>
294
  requires (!sized_sentinel_for<Iterator1, Iterator2>)
295
+ constexpr bool \libspec{disable_sized_sentinel_for}{reverse_iterator}<reverse_iterator<Iterator1>, // freestanding
296
  reverse_iterator<Iterator2>> = true;
297
 
298
  // [insert.iterators], insert iterators
299
  template<class Container> class back_insert_iterator; // freestanding
300
  template<class Container>
 
380
  template<class Iterator>
381
  constexpr move_iterator<Iterator> make_move_iterator(Iterator i); // freestanding
382
 
383
  template<class Iterator1, class Iterator2>
384
  requires (!sized_sentinel_for<Iterator1, Iterator2>)
385
+ constexpr bool \libspec{disable_sized_sentinel_for}{move_iterator}<move_iterator<Iterator1>, // freestanding
386
  move_iterator<Iterator2>> = true;
387
 
388
  template<semiregular S> class move_sentinel; // freestanding
389
 
390
  // [iterators.common], common iterators
 
468
  ssize(const C& c)
469
  -> common_type_t<ptrdiff_t, make_signed_t<decltype(c.size())>>; // freestanding
470
  template<class T, ptrdiff_t N> constexpr ptrdiff_t
471
  ssize(const T (&array)[N]) noexcept; // freestanding
472
 
473
+ template<class C> constexpr auto
474
  empty(const C& c) -> decltype(c.empty()); // freestanding
475
+ template<class T, size_t N> constexpr bool
476
  empty(const T (&array)[N]) noexcept; // freestanding
477
+ template<class E> constexpr bool
478
  empty(initializer_list<E> il) noexcept; // freestanding
479
 
480
  template<class C> constexpr auto data(C& c) -> decltype(c.data()); // freestanding
481
  template<class C> constexpr auto data(const C& c) -> decltype(c.data()); // freestanding
482
  template<class T, size_t N> constexpr T* data(T (&array)[N]) noexcept; // freestanding