]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / unordered_multiset / modifiers / 92878_92947.cc
CommitLineData
b9a2dce8 1// { dg-do run { target c++20 } }
e06cde87 2
a945c346 3// Copyright (C) 2020-2024 Free Software Foundation, Inc.
e06cde87
VV
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10//
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15//
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
19
20#include <unordered_set>
21#include <testsuite_hooks.h>
22
23struct aggressive_aggregate
24{
25 int a;
26 int b;
27};
28
29bool operator==(const aggressive_aggregate& a,
30 const aggressive_aggregate& b)
31{
32 return a.a == b.a;
33};
34
35namespace std {
36 template<> struct hash<aggressive_aggregate> {
37 size_t operator()(const aggressive_aggregate& x) const {
38 return std::hash<int>()(x.a);
39 }
40 };
41}
42
43void test_emplace()
44{
45 std::unordered_multiset<aggressive_aggregate> x;
46 auto it = x.emplace(1, 2);
47 VERIFY(it->a == 1);
48 VERIFY(it->b == 2);
49 it = x.emplace(2);
50 VERIFY(it->a == 2);
51 VERIFY(it->b == 0);
52 it = x.emplace();
53 VERIFY(it->a == 0);
54 VERIFY(it->b == 0);
55}
56
57void test_emplace_hint()
58{
59 std::unordered_multiset<aggressive_aggregate> x;
60 auto it = x.emplace_hint(x.begin(),
61 3, 2);
62 VERIFY(it->a == 3);
63 VERIFY(it->b == 2);
64 it = x.emplace_hint(x.begin(),
65 4);
66 VERIFY(it->a == 4);
67 VERIFY(it->b == 0);
68 it = x.emplace_hint(x.begin());
69 VERIFY(it->a == 0);
70 VERIFY(it->b == 0);
71}
72
73int main()
74{
75 test_emplace();
76 test_emplace_hint();
77}