|
15 | 15 | #include <concepts>
|
16 | 16 | #include <iterator>
|
17 | 17 | #include <ranges>
|
| 18 | +#include <sstream> |
18 | 19 | #include <type_traits>
|
19 | 20 | #include <utility>
|
20 | 21 |
|
@@ -45,7 +46,10 @@ constexpr bool test(CPO& o, Args&&...) {
|
45 | 46 |
|
46 | 47 | int a[10];
|
47 | 48 | int arrays[10][10];
|
48 |
| -//std::pair<int, int> pairs[10]; |
| 49 | +std::pair<int, int> pairs[10]; |
| 50 | +#ifndef TEST_HAS_NO_LOCALIZATION |
| 51 | +std::istringstream stream; |
| 52 | +#endif |
49 | 53 |
|
50 | 54 | // [concept.swappable]
|
51 | 55 | static_assert(test(std::ranges::swap, a, a));
|
@@ -81,25 +85,50 @@ static_assert(test(std::ranges::ssize, a));
|
81 | 85 | // views::empty<T> is not a CPO
|
82 | 86 | static_assert(test(std::views::iota, 1));
|
83 | 87 | static_assert(test(std::views::iota, 1, 10));
|
84 |
| -//static_assert(test(std::views::istream<int>, 1); |
| 88 | +#ifndef TEST_HAS_NO_LOCALIZATION |
| 89 | +static_assert(test(std::views::istream<int>, stream)); |
| 90 | +#endif |
85 | 91 | static_assert(test(std::views::single, 4));
|
86 | 92 |
|
| 93 | +#if TEST_STD_VER >= 23 |
| 94 | +static_assert(test(std::views::repeat, 1)); |
| 95 | +#endif |
| 96 | + |
87 | 97 | // [range.adaptors]
|
88 | 98 | static_assert(test(std::views::all, a));
|
89 | 99 | static_assert(test(std::views::common, a));
|
90 | 100 | static_assert(test(std::views::counted, a, 10));
|
91 | 101 | static_assert(test(std::views::drop, a, 10));
|
92 |
| -//static_assert(test(std::views::drop_while, a, [](int x){ return x < 10; })); |
93 |
| -//static_assert(test(std::views::elements<0>, pairs)); |
| 102 | +static_assert(test(std::views::drop_while, a, [](int x) { return x < 10; })); |
| 103 | +static_assert(test(std::views::elements<0>, pairs)); |
94 | 104 | static_assert(test(std::views::filter, a, [](int x) { return x < 10; }));
|
95 | 105 | static_assert(test(std::views::join, arrays));
|
96 |
| -//static_assert(test(std::views::split, a, 4)); |
| 106 | +static_assert(test(std::views::keys, pairs)); |
97 | 107 | static_assert(test(std::views::lazy_split, a, 4));
|
98 | 108 | static_assert(test(std::views::reverse, a));
|
| 109 | +static_assert(test(std::views::split, a, 4)); |
99 | 110 | static_assert(test(std::views::take, a, 10));
|
100 |
| -//static_assert(test(std::views::take_while, a, [](int x){ return x < 10; })); |
| 111 | +static_assert(test(std::views::take_while, a, [](int x) { return x < 10; })); |
101 | 112 | static_assert(test(std::views::transform, a, [](int x) { return x + 1; }));
|
| 113 | +static_assert(test(std::views::values, pairs)); |
102 | 114 |
|
103 | 115 | #if TEST_STD_VER >= 23
|
| 116 | +// static_assert(test(std::views::adjacent_transform<2>, [](int x, int y) { return x + y; }, a)); |
| 117 | +// static_assert(test(std::views::adjacent<2>, a)); |
| 118 | +// static_assert(test(std::views::as_const, a)); |
| 119 | +static_assert(test(std::views::as_rvalue, a)); |
| 120 | +// static_assert(test(std::views::cartesian_product, a, a, a)); |
| 121 | +static_assert(test(std::views::chunk_by, a, [](int x, int y) { return x < y; })); |
| 122 | +// static_assert(test(std::views::chunk, a, 1)); |
| 123 | +// static_assert(test(std::views::enumerate, a)); |
| 124 | +static_assert(test(std::views::join_with, 1)); |
| 125 | +// static_assert(test(std::views::stride, a, 1)); |
104 | 126 | static_assert(test(std::views::zip_transform, [](int x, int y) { return x + y; }, a, a));
|
| 127 | +static_assert(test(std::views::zip, a, a)); |
| 128 | +#endif |
| 129 | + |
| 130 | +#if TEST_STD_VER >= 26 |
| 131 | +// static_assert(test(std::views::cache_latest, a)); |
| 132 | +// static_assert(test(std::views::concat, a, a)); |
| 133 | +// static_assert(test(std::views::to_input, a)); |
105 | 134 | #endif
|
0 commit comments