Deduction guides for associative containers, debug mode deduction guide fixes.
[official-gcc.git] / libstdc++-v3 / testsuite / 23_containers / multiset / cons / deduction.cc
blob4ca3f98129a0313fe5dbd3d5a45949e972ae63ad
1 // { dg-options "-std=gnu++17" }
2 // { dg-do compile { target c++17 } }
4 #include <set>
5 #include <testsuite_allocator.h>
7 using __gnu_test::SimpleAllocator;
9 static_assert(std::is_same_v<
10 decltype(std::multiset{1, 2, 3}),
11 std::multiset<int>>);
13 static_assert(std::is_same_v<
14 decltype(std::multiset{1, 2, 3}),
15 std::multiset<int>>);
17 static_assert(std::is_same_v<
18 decltype(std::multiset{{1, 2, 3},
19 std::less<int>{}, {}}),
20 std::multiset<int>>);
22 static_assert(std::is_same_v<
23 decltype(std::multiset{{1, 2, 3},
24 {}}),
25 std::multiset<int>>);
27 static_assert(std::is_same_v<
28 decltype(std::multiset{{1, 2, 3},
29 {}, SimpleAllocator<int>{}}),
30 std::multiset<int, std::less<int>,
31 SimpleAllocator<int>>>);
33 void f()
35 std::multiset<int> x;
37 static_assert(std::is_same_v<
38 decltype(std::multiset(x.begin(), x.end())),
39 std::multiset<int>>);
41 static_assert(std::is_same_v<
42 decltype(std::multiset{x.begin(), x.end(),
43 std::less<int>{},
44 std::allocator<int>{}}),
45 std::multiset<int>>);
47 static_assert(std::is_same_v<
48 decltype(std::multiset{x.begin(), x.end(),
49 std::less<int>{}, {}}),
50 std::multiset<int>>);
52 static_assert(std::is_same_v<
53 decltype(std::multiset(x.begin(), x.end(),
54 {})),
55 std::multiset<int>>);
57 static_assert(std::is_same_v<
58 decltype(std::multiset{x.begin(), x.end(),
59 {},
60 std::allocator<int>{}}),
61 std::multiset<int>>);
63 static_assert(std::is_same_v<
64 decltype(std::multiset{x.begin(), x.end(),
65 {},
66 SimpleAllocator<int>{}}),
67 std::multiset<int, std::less<int>, SimpleAllocator<int>>>);