1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // UNSUPPORTED: c++98, c++03, c++11, c++14
16 // iterator insert(const_iterator hint, node_type&&);
19 #include "min_allocator.h"
21 template <class Container>
22 typename Container::node_type
23 node_factory(typename Container::key_type const& key,
24 typename Container::mapped_type const& mapped)
27 auto it = c.insert({key, mapped});
31 template <class Container>
32 void test(Container& c)
34 auto* nf = &node_factory<Container>;
36 for (int i = 0; i != 10; ++i)
38 typename Container::node_type node = nf(i, i + 1);
39 assert(!node.empty());
40 size_t prev = c.size();
41 auto it = c.insert(c.end(), std::move(node));
43 assert(prev + 1 == c.size());
44 assert(it == c.find(i));
45 assert(it->first == i);
46 assert(it->second == i + 1);
49 assert(c.size() == 10);
51 for (int i = 0; i != 10; ++i)
53 assert(c.count(i) == 1);
54 assert(c.find(i)->second == i + 1);
60 std::multimap<int, int> m;
62 std::multimap<int, int, std::less<int>, min_allocator<std::pair<const int, int>>> m2;