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 // <vector> 11 12 // void push_back(value_type&& x); 13 14 #include <vector> 15 #include <cassert> 16 #include "../../../MoveOnly.h" 17 #include "../../../stack_allocator.h" 18 #include "min_allocator.h" 19 20 int main() 21 { 22 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 23 { 24 std::vector<MoveOnly> c; 25 c.push_back(MoveOnly(0)); 26 assert(c.size() == 1); 27 for (int j = 0; j < c.size(); ++j) 28 assert(c[j] == MoveOnly(j)); 29 c.push_back(MoveOnly(1)); 30 assert(c.size() == 2); 31 for (int j = 0; j < c.size(); ++j) 32 assert(c[j] == MoveOnly(j)); 33 c.push_back(MoveOnly(2)); 34 assert(c.size() == 3); 35 for (int j = 0; j < c.size(); ++j) 36 assert(c[j] == MoveOnly(j)); 37 c.push_back(MoveOnly(3)); 38 assert(c.size() == 4); 39 for (int j = 0; j < c.size(); ++j) 40 assert(c[j] == MoveOnly(j)); 41 c.push_back(MoveOnly(4)); 42 assert(c.size() == 5); 43 for (int j = 0; j < c.size(); ++j) 44 assert(c[j] == MoveOnly(j)); 45 } 46 { 47 std::vector<MoveOnly, stack_allocator<MoveOnly, 15> > c; 48 c.push_back(MoveOnly(0)); 49 assert(c.size() == 1); 50 for (int j = 0; j < c.size(); ++j) 51 assert(c[j] == MoveOnly(j)); 52 c.push_back(MoveOnly(1)); 53 assert(c.size() == 2); 54 for (int j = 0; j < c.size(); ++j) 55 assert(c[j] == MoveOnly(j)); 56 c.push_back(MoveOnly(2)); 57 assert(c.size() == 3); 58 for (int j = 0; j < c.size(); ++j) 59 assert(c[j] == MoveOnly(j)); 60 c.push_back(MoveOnly(3)); 61 assert(c.size() == 4); 62 for (int j = 0; j < c.size(); ++j) 63 assert(c[j] == MoveOnly(j)); 64 c.push_back(MoveOnly(4)); 65 assert(c.size() == 5); 66 for (int j = 0; j < c.size(); ++j) 67 assert(c[j] == MoveOnly(j)); 68 } 69 #if __cplusplus >= 201103L 70 { 71 std::vector<MoveOnly, min_allocator<MoveOnly>> c; 72 c.push_back(MoveOnly(0)); 73 assert(c.size() == 1); 74 for (int j = 0; j < c.size(); ++j) 75 assert(c[j] == MoveOnly(j)); 76 c.push_back(MoveOnly(1)); 77 assert(c.size() == 2); 78 for (int j = 0; j < c.size(); ++j) 79 assert(c[j] == MoveOnly(j)); 80 c.push_back(MoveOnly(2)); 81 assert(c.size() == 3); 82 for (int j = 0; j < c.size(); ++j) 83 assert(c[j] == MoveOnly(j)); 84 c.push_back(MoveOnly(3)); 85 assert(c.size() == 4); 86 for (int j = 0; j < c.size(); ++j) 87 assert(c[j] == MoveOnly(j)); 88 c.push_back(MoveOnly(4)); 89 assert(c.size() == 5); 90 for (int j = 0; j < c.size(); ++j) 91 assert(c[j] == MoveOnly(j)); 92 } 93 #endif 94 #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 95 } 96