libstdc++: Make __gnu_debug::vector usable in constant expressions [PR109536]
[official-gcc.git] / libstdc++-v3 / testsuite / 23_containers / vector / modifiers / swap / constexpr.cc
blob77d2a518d6960c71164bb70c711369d18734329f
1 // { dg-do compile { target c++20 } }
3 #include <vector>
4 #include <utility>
5 #include <testsuite_hooks.h>
7 constexpr bool
8 test_std_swap()
10 std::vector<int> v1 = {1, 2, 3};
11 std::vector<int> v2 = {0, 1};
13 std::swap(v1, v2);
15 VERIFY(v1.size() == 2);
16 VERIFY(v1.at(0) == 0);
17 VERIFY(v1.at(1) == 1);
19 VERIFY(v2.size() == 3);
20 VERIFY(v2[0] == 1);
21 VERIFY(v2[1] == 2);
22 VERIFY(v2[2] == 3);
24 return true;
27 static_assert(test_std_swap());
29 constexpr bool
30 test_member_swap()
32 std::vector<int> v1 = {1, 2, 3};
33 std::vector<int> v2 = {0, 1};
35 v1.swap(v2);
37 VERIFY(v1.size() == 2);
38 VERIFY(v1.at(0) == 0);
39 VERIFY(v1.at(1) == 1);
41 VERIFY(v2.size() == 3);
42 VERIFY(v2[0] == 1);
43 VERIFY(v2[1] == 2);
44 VERIFY(v2[2] == 3);
46 return true;
49 static_assert(test_member_swap());