summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc')
-rw-r--r--libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc68
1 files changed, 68 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc b/libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
new file mode 100644
index 00000000000..73d5cfdd227
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
@@ -0,0 +1,68 @@
+// { dg-options "-std=gnu++17" }
+// { dg-do compile { target c++17 } }
+
+#include <set>
+#include <testsuite_allocator.h>
+
+using __gnu_test::SimpleAllocator;
+
+static_assert(std::is_same_v<
+ decltype(std::set{1, 2, 3}),
+ std::set<int>>);
+
+static_assert(std::is_same_v<
+ decltype(std::set{1, 2, 3}),
+ std::set<int>>);
+
+static_assert(std::is_same_v<
+ decltype(std::set{{1, 2, 3},
+ std::less<int>{}, {}}),
+ std::set<int>>);
+
+static_assert(std::is_same_v<
+ decltype(std::set{{1, 2, 3},
+ {}}),
+ std::set<int>>);
+
+static_assert(std::is_same_v<
+ decltype(std::set{{1, 2, 3},
+ {}, SimpleAllocator<int>{}}),
+ std::set<int, std::less<int>,
+ SimpleAllocator<int>>>);
+
+void f()
+{
+ std::set<int> x;
+
+ static_assert(std::is_same_v<
+ decltype(std::set(x.begin(), x.end())),
+ std::set<int>>);
+
+ static_assert(std::is_same_v<
+ decltype(std::set{x.begin(), x.end(),
+ std::less<int>{},
+ std::allocator<int>{}}),
+ std::set<int>>);
+
+ static_assert(std::is_same_v<
+ decltype(std::set{x.begin(), x.end(),
+ std::less<int>{}, {}}),
+ std::set<int>>);
+
+ static_assert(std::is_same_v<
+ decltype(std::set(x.begin(), x.end(),
+ {})),
+ std::set<int>>);
+
+ static_assert(std::is_same_v<
+ decltype(std::set{x.begin(), x.end(),
+ {},
+ std::allocator<int>{}}),
+ std::set<int>>);
+
+ static_assert(std::is_same_v<
+ decltype(std::set{x.begin(), x.end(),
+ {},
+ SimpleAllocator<int>{}}),
+ std::set<int, std::less<int>, SimpleAllocator<int>>>);
+}