@@ -83,6 +83,10 @@ namespace test_view_interface {
83
83
84
84
S end ();
85
85
S end () const requires (to_bool(HasConstRange));
86
+
87
+ unsigned int size () requires (to_bool(Diff) && !std::derived_from<Cat, forward_iterator_tag>);
88
+ unsigned int size () const requires (to_bool(HasConstRange) && to_bool(Diff)
89
+ && !std::derived_from<Cat, forward_iterator_tag>);
86
90
};
87
91
// clang-format on
88
92
@@ -133,13 +137,13 @@ namespace test_view_interface {
133
137
STATIC_ASSERT (ranges::range<V>);
134
138
STATIC_ASSERT (!ranges::range<V const >);
135
139
STATIC_ASSERT (ranges::view<V>);
136
- STATIC_ASSERT (! CanEmpty<V&>);
140
+ STATIC_ASSERT (CanEmpty<V&>);
137
141
STATIC_ASSERT (!CanEmpty<V const &>);
138
- STATIC_ASSERT (! CanBool<V&>);
142
+ STATIC_ASSERT (CanBool<V&>);
139
143
STATIC_ASSERT (!CanBool<V const &>);
140
144
STATIC_ASSERT (!CanData<V&>);
141
145
STATIC_ASSERT (!CanData<V const &>);
142
- STATIC_ASSERT (! CanSize<V&>);
146
+ STATIC_ASSERT (CanSize<V&>);
143
147
STATIC_ASSERT (!CanSize<V const &>);
144
148
STATIC_ASSERT (!CanMemberFront<V&>);
145
149
STATIC_ASSERT (!CanMemberFront<V const &>);
@@ -154,14 +158,14 @@ namespace test_view_interface {
154
158
STATIC_ASSERT (ranges::range<V>);
155
159
STATIC_ASSERT (ranges::range<V const >);
156
160
STATIC_ASSERT (ranges::view<V>);
157
- STATIC_ASSERT (! CanEmpty<V&>);
158
- STATIC_ASSERT (! CanEmpty<V const &>);
159
- STATIC_ASSERT (! CanBool<V&>);
160
- STATIC_ASSERT (! CanBool<V const &>);
161
+ STATIC_ASSERT (CanEmpty<V&>);
162
+ STATIC_ASSERT (CanEmpty<V const &>);
163
+ STATIC_ASSERT (CanBool<V&>);
164
+ STATIC_ASSERT (CanBool<V const &>);
161
165
STATIC_ASSERT (!CanData<V&>);
162
166
STATIC_ASSERT (!CanData<V const &>);
163
- STATIC_ASSERT (! CanSize<V&>);
164
- STATIC_ASSERT (! CanSize<V const &>);
167
+ STATIC_ASSERT (CanSize<V&>);
168
+ STATIC_ASSERT (CanSize<V const &>);
165
169
STATIC_ASSERT (!CanMemberFront<V&>);
166
170
STATIC_ASSERT (!CanMemberFront<V const &>);
167
171
STATIC_ASSERT (!CanMemberBack<V&>);
@@ -217,13 +221,13 @@ namespace test_view_interface {
217
221
STATIC_ASSERT (ranges::range<V>);
218
222
STATIC_ASSERT (!ranges::range<V const >);
219
223
STATIC_ASSERT (ranges::view<V>);
220
- STATIC_ASSERT (! CanEmpty<V&>);
224
+ STATIC_ASSERT (CanEmpty<V&>);
221
225
STATIC_ASSERT (!CanEmpty<V const &>);
222
- STATIC_ASSERT (! CanBool<V&>);
226
+ STATIC_ASSERT (CanBool<V&>);
223
227
STATIC_ASSERT (!CanBool<V const &>);
224
228
STATIC_ASSERT (!CanData<V&>);
225
229
STATIC_ASSERT (!CanData<V const &>);
226
- STATIC_ASSERT (! CanSize<V&>);
230
+ STATIC_ASSERT (CanSize<V&>);
227
231
STATIC_ASSERT (!CanSize<V const &>);
228
232
STATIC_ASSERT (!CanMemberFront<V&>);
229
233
STATIC_ASSERT (!CanMemberFront<V const &>);
@@ -238,14 +242,14 @@ namespace test_view_interface {
238
242
STATIC_ASSERT (ranges::range<V>);
239
243
STATIC_ASSERT (ranges::range<V const >);
240
244
STATIC_ASSERT (ranges::view<V>);
241
- STATIC_ASSERT (! CanEmpty<V&>);
242
- STATIC_ASSERT (! CanEmpty<V const &>);
243
- STATIC_ASSERT (! CanBool<V&>);
244
- STATIC_ASSERT (! CanBool<V const &>);
245
+ STATIC_ASSERT (CanEmpty<V&>);
246
+ STATIC_ASSERT (CanEmpty<V const &>);
247
+ STATIC_ASSERT (CanBool<V&>);
248
+ STATIC_ASSERT (CanBool<V const &>);
245
249
STATIC_ASSERT (!CanData<V&>);
246
250
STATIC_ASSERT (!CanData<V const &>);
247
- STATIC_ASSERT (! CanSize<V&>);
248
- STATIC_ASSERT (! CanSize<V const &>);
251
+ STATIC_ASSERT (CanSize<V&>);
252
+ STATIC_ASSERT (CanSize<V const &>);
249
253
STATIC_ASSERT (!CanMemberFront<V&>);
250
254
STATIC_ASSERT (!CanMemberFront<V const &>);
251
255
STATIC_ASSERT (!CanMemberBack<V&>);
0 commit comments