]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/containers/sequences/vector.bool/emplace_back.pass.cpp
Vendor import of libc++ trunk r290819:
[FreeBSD/FreeBSD.git] / test / std / containers / sequences / vector.bool / emplace_back.pass.cpp
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 // UNSUPPORTED: c++98, c++03, c++11
11 // <vector>
12 //  vector.bool
13
14 // template <class... Args> reference emplace_back(Args&&... args);
15
16 #include <vector>
17 #include <cassert>
18 #include "min_allocator.h"
19
20 int main()
21 {
22     {
23         typedef std::vector<bool> C;
24         typedef C::reference Ref;
25         C c;
26         Ref r1 = c.emplace_back();
27         assert(c.size() == 1);
28         assert(c.front() == false);
29         r1 = true;
30         assert(c.front() == true);
31         r1 = false;
32         Ref r2 = c.emplace_back(true);
33         assert(c.size() == 2);
34         assert(c.front() == false);
35         assert(c.back() == true);
36         r2 = false;
37         assert(c.back() == false);
38         r2 = true;
39         Ref r3 = c.emplace_back(1 == 1);
40         assert(c.size() == 3);
41         assert(c.front() == false);
42         assert(c[1] == true);
43         assert(c.back() == true);
44         r3 = false;
45         assert(c.back() == false);
46     }
47     {
48         typedef std::vector<bool, min_allocator<bool>> C;
49         typedef C::reference Ref;
50         C c;
51
52         Ref r1 = c.emplace_back();
53         assert(c.size() == 1);
54         assert(c.front() == false);
55         r1 = true;
56         assert(c.front() == true);
57         r1 = false;
58         Ref r2 = c.emplace_back(true);
59         assert(c.size() == 2);
60         assert(c.front() == false);
61         assert(c.back() == true);
62         r2 = false;
63         assert(c.back() == false);
64         r2 = true;
65         c.emplace_back(1 == 1);
66         assert(c.size() == 3);
67         assert(c.front() == false);
68         assert(c[1] == true);
69         assert(c.back() == true);
70     }
71 }