1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 // template <class InputIter> vector(InputIter first, InputIter last);
18 #include "test_macros.h"
19 #include "test_iterators.h"
20 #include "min_allocator.h"
22 template <class C
, class Iterator
>
24 test(Iterator first
, Iterator last
)
27 LIBCPP_ASSERT(c
.__invariants());
28 assert(c
.size() == static_cast<std::size_t>(std::distance(first
, last
)));
29 for (typename
C::const_iterator i
= c
.cbegin(), e
= c
.cend(); i
!= e
; ++i
, ++first
)
35 bool a
[] = {0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0};
36 bool* an
= a
+ sizeof(a
)/sizeof(a
[0]);
37 test
<std::vector
<bool> >(input_iterator
<const bool*>(a
), input_iterator
<const bool*>(an
));
38 test
<std::vector
<bool> >(forward_iterator
<const bool*>(a
), forward_iterator
<const bool*>(an
));
39 test
<std::vector
<bool> >(bidirectional_iterator
<const bool*>(a
), bidirectional_iterator
<const bool*>(an
));
40 test
<std::vector
<bool> >(random_access_iterator
<const bool*>(a
), random_access_iterator
<const bool*>(an
));
41 test
<std::vector
<bool> >(a
, an
);
42 #if TEST_STD_VER >= 11
43 test
<std::vector
<bool, min_allocator
<bool>> >(input_iterator
<const bool*>(a
), input_iterator
<const bool*>(an
));
44 test
<std::vector
<bool, min_allocator
<bool>> >(forward_iterator
<const bool*>(a
), forward_iterator
<const bool*>(an
));
45 test
<std::vector
<bool, min_allocator
<bool>> >(bidirectional_iterator
<const bool*>(a
), bidirectional_iterator
<const bool*>(an
));
46 test
<std::vector
<bool, min_allocator
<bool>> >(random_access_iterator
<const bool*>(a
), random_access_iterator
<const bool*>(an
));
47 test
<std::vector
<bool, min_allocator
<bool>> >(a
, an
);