copy.pass.cpp revision 29f7432ff3a5c503a98a66ae46dd571b651c88b5
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// <list>
11
12// list(const list& c);
13
14#include <list>
15#include <cassert>
16#include "../../../DefaultOnly.h"
17#include "../../../test_allocator.h"
18#include "../../../min_allocator.h"
19
20int main()
21{
22    {
23        std::list<int> l(3, 2);
24        std::list<int> l2 = l;
25        assert(l2 == l);
26    }
27    {
28        std::list<int, test_allocator<int> > l(3, 2, test_allocator<int>(5));
29        std::list<int, test_allocator<int> > l2 = l;
30        assert(l2 == l);
31        assert(l2.get_allocator() == l.get_allocator());
32    }
33#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE
34    {
35        std::list<int, other_allocator<int> > l(3, 2, other_allocator<int>(5));
36        std::list<int, other_allocator<int> > l2 = l;
37        assert(l2 == l);
38        assert(l2.get_allocator() == other_allocator<int>(-2));
39    }
40#endif  // _LIBCPP_HAS_NO_ADVANCED_SFINAE
41#if __cplusplus >= 201103L
42    {
43        std::list<int, min_allocator<int>> l(3, 2);
44        std::list<int, min_allocator<int>> l2 = l;
45        assert(l2 == l);
46    }
47    {
48        std::list<int, min_allocator<int> > l(3, 2, min_allocator<int>());
49        std::list<int, min_allocator<int> > l2 = l;
50        assert(l2 == l);
51        assert(l2.get_allocator() == l.get_allocator());
52    }
53#endif
54}
55