blob: f14cf6b07eb1c35f8e33e9373b6a8a46b9b05450 [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnantf5256e12010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00004//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <vector>
11
12// vector& operator=(vector&& c);
13
14#include <vector>
15#include <cassert>
16#include "../../../MoveOnly.h"
17#include "../../../test_allocator.h"
18
19int main()
20{
Howard Hinnant73d21a42010-09-04 23:28:19 +000021#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000022 {
23 std::vector<MoveOnly, test_allocator<MoveOnly> > l(test_allocator<MoveOnly>(5));
24 std::vector<MoveOnly, test_allocator<MoveOnly> > lo(test_allocator<MoveOnly>(5));
25 for (int i = 1; i <= 3; ++i)
26 {
27 l.push_back(i);
28 lo.push_back(i);
29 }
30 std::vector<MoveOnly, test_allocator<MoveOnly> > l2(test_allocator<MoveOnly>(5));
31 l2 = std::move(l);
32 assert(l2 == lo);
33 assert(l.empty());
34 assert(l2.get_allocator() == lo.get_allocator());
35 }
36 {
37 std::vector<MoveOnly, test_allocator<MoveOnly> > l(test_allocator<MoveOnly>(5));
38 std::vector<MoveOnly, test_allocator<MoveOnly> > lo(test_allocator<MoveOnly>(5));
39 for (int i = 1; i <= 3; ++i)
40 {
41 l.push_back(i);
42 lo.push_back(i);
43 }
44 std::vector<MoveOnly, test_allocator<MoveOnly> > l2(test_allocator<MoveOnly>(6));
45 l2 = std::move(l);
46 assert(l2 == lo);
47 assert(!l.empty());
48 assert(l2.get_allocator() == test_allocator<MoveOnly>(6));
49 }
50 {
51 std::vector<MoveOnly, other_allocator<MoveOnly> > l(other_allocator<MoveOnly>(5));
52 std::vector<MoveOnly, other_allocator<MoveOnly> > lo(other_allocator<MoveOnly>(5));
53 for (int i = 1; i <= 3; ++i)
54 {
55 l.push_back(i);
56 lo.push_back(i);
57 }
58 std::vector<MoveOnly, other_allocator<MoveOnly> > l2(other_allocator<MoveOnly>(6));
59 l2 = std::move(l);
60 assert(l2 == lo);
61 assert(l.empty());
62 assert(l2.get_allocator() == lo.get_allocator());
63 }
Howard Hinnant73d21a42010-09-04 23:28:19 +000064#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000065}