1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // UNSUPPORTED: c++03, c++11, c++14, c++17
12 #include <unordered_map>
16 // bool contains(const key_type& x) const;
18 template <typename T
, typename P
, typename B
, typename
... Pairs
>
19 void test(B bad
, Pairs
... args
) {
21 P pairs
[] = {args
...};
23 for (auto& p
: pairs
) map
.insert(p
);
24 for (auto& p
: pairs
) assert(map
.contains(p
.first
));
26 assert(!map
.contains(bad
));
29 struct E
{ int a
= 1; double b
= 1; char c
= 1; };
34 test
<std::unordered_map
<char, int>, std::pair
<char, int> >(
35 'e', std::make_pair('a', 10), std::make_pair('b', 11),
36 std::make_pair('c', 12), std::make_pair('d', 13));
38 test
<std::unordered_map
<char, char>, std::pair
<char, char> >(
39 'e', std::make_pair('a', 'a'), std::make_pair('b', 'a'),
40 std::make_pair('c', 'a'), std::make_pair('d', 'b'));
42 test
<std::unordered_map
<int, E
>, std::pair
<int, E
> >(
43 -1, std::make_pair(1, E
{}), std::make_pair(2, E
{}),
44 std::make_pair(3, E
{}), std::make_pair(4, E
{}));
47 test
<std::unordered_multimap
<char, int>, std::pair
<char, int> >(
48 'e', std::make_pair('a', 10), std::make_pair('b', 11),
49 std::make_pair('c', 12), std::make_pair('d', 13));
51 test
<std::unordered_multimap
<char, char>, std::pair
<char, char> >(
52 'e', std::make_pair('a', 'a'), std::make_pair('b', 'a'),
53 std::make_pair('c', 'a'), std::make_pair('d', 'b'));
55 test
<std::unordered_multimap
<int, E
>, std::pair
<int, E
> >(
56 -1, std::make_pair(1, E
{}), std::make_pair(2, E
{}),
57 std::make_pair(3, E
{}), std::make_pair(4, E
{}));