1 // { dg-options "-std=gnu++23" }
2 // { dg-do run { target c++23 } }
5 #include <testsuite_hooks.h>
6 #include <testsuite_iterators.h>
8 namespace ranges
= std::ranges
;
13 int x
[] = {1,2,3,4,5};
16 __gnu_test::test_forward_range
<int> rx(x
);
17 __gnu_test::test_forward_range
<int> ry(y
);
18 __gnu_test::test_forward_range
<int> rz(z
);
19 VERIFY( ranges::contains_subrange(rx
, ry
) );
20 VERIFY( !ranges::contains_subrange(rx
, rz
) );
21 VERIFY( ranges::contains_subrange(rx
, ry
, ranges::less
{}) );
22 VERIFY( ranges::contains_subrange(rx
, rz
, ranges::less
{}) );
23 auto plus3
= [](int n
) { return n
+3; };
24 VERIFY( !ranges::contains_subrange(rx
, ry
, {}, plus3
) );
25 VERIFY( ranges::contains_subrange(rx
, rz
, {}, plus3
) );
26 VERIFY( ranges::contains_subrange(rx
, ry
, {}, plus3
, plus3
) );
27 VERIFY( !ranges::contains_subrange(rx
, rz
, {}, plus3
, plus3
) );
29 VERIFY( ranges::contains_subrange(x
, x
+2, y
, y
+1) );
30 VERIFY( !ranges::contains_subrange(x
, x
+2, y
, y
+2) );