emplace_hint.pass.cpp revision 635ce1d127b617ae194b8aef03f52e810a6b6eff
1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//===----------------------------------------------------------------------===//
2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//
3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This file is dual licensed under the MIT and the University of Illinois Open
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//===----------------------------------------------------------------------===//
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// <unordered_map>
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)//           class Alloc = allocator<pair<const Key, T>>>
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// class unordered_map
15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// template <class... Args>
17//     iterator emplace_hint(const_iterator p, Args&&... args);
18
19#include <unordered_map>
20#include <cassert>
21
22#include "../../../Emplaceable.h"
23
24int main()
25{
26#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
27    {
28        typedef std::unordered_map<int, Emplaceable> C;
29        typedef C::iterator R;
30        C c;
31        C::const_iterator e = c.end();
32        R r = c.emplace_hint(e, 3);
33        assert(c.size() == 1);
34        assert(r->first == 3);
35        assert(r->second == Emplaceable());
36
37        r = c.emplace_hint(e, std::pair<const int, Emplaceable>(4, Emplaceable(5, 6)));
38        assert(c.size() == 2);
39        assert(r->first == 4);
40        assert(r->second == Emplaceable(5, 6));
41
42        r = c.emplace_hint(e, std::piecewise_construct, std::forward_as_tuple(5),
43                                                       std::forward_as_tuple(6, 7));
44        assert(c.size() == 3);
45        assert(r->first == 5);
46        assert(r->second == Emplaceable(6, 7));
47    }
48#endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
49}
50