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// vector(const vector& v, const allocator_type& a); 13 14#include <vector> 15#include <cassert> 16#include "test_allocator.h" 17#include "min_allocator.h" 18 19template <class C> 20void 21test(const C& x, const typename C::allocator_type& a) 22{ 23 unsigned s = x.size(); 24 C c(x, a); 25 assert(c.__invariants()); 26 assert(c.size() == s); 27 assert(c == x); 28} 29 30int main() 31{ 32 { 33 int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 1, 0}; 34 int* an = a + sizeof(a)/sizeof(a[0]); 35 test(std::vector<bool>(a, an), std::allocator<bool>()); 36 } 37 { 38 std::vector<bool, test_allocator<bool> > l(3, 2, test_allocator<bool>(5)); 39 std::vector<bool, test_allocator<bool> > l2(l, test_allocator<bool>(3)); 40 assert(l2 == l); 41 assert(l2.get_allocator() == test_allocator<bool>(3)); 42 } 43 { 44 std::vector<bool, other_allocator<bool> > l(3, 2, other_allocator<bool>(5)); 45 std::vector<bool, other_allocator<bool> > l2(l, other_allocator<bool>(3)); 46 assert(l2 == l); 47 assert(l2.get_allocator() == other_allocator<bool>(3)); 48 } 49#if __cplusplus >= 201103L 50 { 51 int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 1, 0}; 52 int* an = a + sizeof(a)/sizeof(a[0]); 53 test(std::vector<bool, min_allocator<bool>>(a, an), min_allocator<bool>()); 54 } 55 { 56 std::vector<bool, min_allocator<bool> > l(3, 2, min_allocator<bool>()); 57 std::vector<bool, min_allocator<bool> > l2(l, min_allocator<bool>()); 58 assert(l2 == l); 59 assert(l2.get_allocator() == min_allocator<bool>()); 60 } 61#endif 62} 63