diff options
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc')
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc | 68 |
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>>>); +} |