1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <set>
11
12// class multiset
13
14// void insert(initializer_list<value_type> il);
15
16#include <set>
17#include <cassert>
18#include <cstddef>
19
20#include "min_allocator.h"
21
22int main()
23{
24#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
25    {
26    typedef std::multiset<int> C;
27    typedef C::value_type V;
28    C m = {10, 8};
29    m.insert({1, 2, 3, 4, 5, 6});
30    assert(m.size() == 8);
31    assert(static_cast<std::size_t>(distance(m.begin(), m.end())) == m.size());
32    C::const_iterator i = m.cbegin();
33    assert(*i == V(1));
34    assert(*++i == V(2));
35    assert(*++i == V(3));
36    assert(*++i == V(4));
37    assert(*++i == V(5));
38    assert(*++i == V(6));
39    assert(*++i == V(8));
40    assert(*++i == V(10));
41    }
42#endif  // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
43#if TEST_STD_VER >= 11
44    {
45    typedef std::multiset<int, std::less<int>, min_allocator<int>> C;
46    typedef C::value_type V;
47    C m = {10, 8};
48    m.insert({1, 2, 3, 4, 5, 6});
49    assert(m.size() == 8);
50    assert(static_cast<std::size_t>(distance(m.begin(), m.end())) == m.size());
51    C::const_iterator i = m.cbegin();
52    assert(*i == V(1));
53    assert(*++i == V(2));
54    assert(*++i == V(3));
55    assert(*++i == V(4));
56    assert(*++i == V(5));
57    assert(*++i == V(6));
58    assert(*++i == V(8));
59    assert(*++i == V(10));
60    }
61#endif
62}
63