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 |
-
|
| 142 |
|
| 143 |
-
template<
|
| 144 |
-
|
|
|
|
| 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>
|
| 472 |
empty(const C& c) -> decltype(c.empty()); // freestanding
|
| 473 |
-
template<class T, size_t N>
|
| 474 |
empty(const T (&array)[N]) noexcept; // freestanding
|
| 475 |
-
template<class E>
|
| 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
|