1198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//===----------------------------------------------------------------------===//
2198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//
3198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//                     The LLVM Compiler Infrastructure
4198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//
5198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open
6198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow// Source Licenses. See LICENSE.TXT for details.
7198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//
8198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//===----------------------------------------------------------------------===//
9198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
10198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow// <vector>
11198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow//  vector.bool
12198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
13198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow// template <class... Args> void emplace_back(Args&&... args);
14198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
15198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow#include <vector>
16198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow#include <cassert>
17061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
18198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
19198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
20198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clowint main()
21198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow{
22198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow#if _LIBCPP_STD_VER > 11
23198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow    {
24198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        typedef std::vector<bool> C;
25198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        C c;
26198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back();
27198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 1);
28198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
29198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back(true);
30198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 2);
31198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
32198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.back() == true);
33198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back(1 == 1);
34198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 3);
35198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
36198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c[1] == true);
37198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.back() == true);
38198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow    }
39198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow    {
40198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        typedef std::vector<bool, min_allocator<bool>> C;
41198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        C c;
42198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow
43198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back();
44198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 1);
45198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
46198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back(true);
47198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 2);
48198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
49198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.back() == true);
50198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        c.emplace_back(1 == 1);
51198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.size() == 3);
52198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.front() == false);
53198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c[1] == true);
54198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow        assert(c.back() == true);
55198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow    }
56198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow#endif
57198a2a59ee8e99365c8d4ef6d5346e6743f58cb1Marshall Clow}
58