blob: f4816aacb053f017b63e124095cbb69e4f56d4e5 [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnantf5256e12010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00004//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <unordered_map>
11
12// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13// class Alloc = allocator<pair<const Key, T>>>
14// class unordered_map
15
16// template <class P,
17// class = typename enable_if<is_convertible<P, value_type>::value>::type>
18// iterator insert(const_iterator p, P&& x);
19
20#include <unordered_map>
21#include <cassert>
22
23#include "../../../MoveOnly.h"
24
25int main()
26{
27 {
28 typedef std::unordered_map<double, int> C;
29 typedef C::iterator R;
30 typedef std::pair<double, short> P;
31 C c;
32 C::const_iterator e = c.end();
33 R r = c.insert(e, P(3.5, 3));
34 assert(c.size() == 1);
35 assert(r->first == 3.5);
36 assert(r->second == 3);
37
38 r = c.insert(e, P(3.5, 4));
39 assert(c.size() == 1);
40 assert(r->first == 3.5);
41 assert(r->second == 3);
42
43 r = c.insert(e, P(4.5, 4));
44 assert(c.size() == 2);
45 assert(r->first == 4.5);
46 assert(r->second == 4);
47
48 r = c.insert(e, P(5.5, 4));
49 assert(c.size() == 3);
50 assert(r->first == 5.5);
51 assert(r->second == 4);
52 }
Howard Hinnant73d21a42010-09-04 23:28:19 +000053#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000054 {
55 typedef std::unordered_map<MoveOnly, MoveOnly> C;
56 typedef C::iterator R;
57 typedef std::pair<MoveOnly, MoveOnly> P;
58 C c;
59 C::const_iterator e = c.end();
60 R r = c.insert(e, P(3, 3));
61 assert(c.size() == 1);
62 assert(r->first == 3);
63 assert(r->second == 3);
64
65 r = c.insert(e, P(3, 4));
66 assert(c.size() == 1);
67 assert(r->first == 3);
68 assert(r->second == 3);
69
70 r = c.insert(e, P(4, 4));
71 assert(c.size() == 2);
72 assert(r->first == 4);
73 assert(r->second == 4);
74
75 r = c.insert(e, P(5, 4));
76 assert(c.size() == 3);
77 assert(r->first == 5);
78 assert(r->second == 4);
79 }
Howard Hinnant73d21a42010-09-04 23:28:19 +000080#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000081}