initializer_list.pass.cpp revision 061d0cc4db18d17bf01ed14c5db0be098205bd47
1579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//===----------------------------------------------------------------------===//
2579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//
3579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//                     The LLVM Compiler Infrastructure
4579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//
5579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson// This file is dual licensed under the MIT and the University of Illinois Open
6579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson// Source Licenses. See LICENSE.TXT for details.
7579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//
8579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson//===----------------------------------------------------------------------===//
9579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
10579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson// <map>
11579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
12579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson// class map
13579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
14579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson// map(initializer_list<value_type> il);
15579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
16579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#include <map>
17579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#include <cassert>
18579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
19579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#include "min_allocator.h"
20579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
21579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonint main()
22579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson{
23579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
24579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    {
25579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    typedef std::pair<const int, double> V;
26579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    std::map<int, double> m =
27579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                            {
28579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 1},
29579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 1.5},
30579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 2},
31579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 1},
32579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 1.5},
33579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 2},
34579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 1},
35579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 1.5},
36579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 2}
37579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                            };
38579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(m.size() == 3);
39579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(distance(m.begin(), m.end()) == 3);
40579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*m.begin() == V(1, 1));
41579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*next(m.begin()) == V(2, 1));
42579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*next(m.begin(), 2) == V(3, 1));
43579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    }
44579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#if __cplusplus >= 201103L
45579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    {
46579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    typedef std::pair<const int, double> V;
47579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    std::map<int, double, std::less<int>, min_allocator<V>> m =
48579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                            {
49579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 1},
50579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 1.5},
51579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {1, 2},
52579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 1},
53579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 1.5},
54579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {2, 2},
55579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 1},
56579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 1.5},
57579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                                {3, 2}
58579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson                            };
59579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(m.size() == 3);
60579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(distance(m.begin(), m.end()) == 3);
61579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*m.begin() == V(1, 1));
62579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*next(m.begin()) == V(2, 1));
63579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    assert(*next(m.begin(), 2) == V(3, 1));
64579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    }
65579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#endif
66579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson#endif  // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
67579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson}
68579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson