diff options
Diffstat (limited to 'libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp')
-rw-r--r-- | libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp | 100 |
1 files changed, 48 insertions, 52 deletions
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp index 027dedcdc9b..179e4f1bb34 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp @@ -19,23 +19,11 @@ #include "test_iterators.h" #include "user_defined_integral.h" -// #if TEST_STD_VER > 17 -// TEST_CONSTEXPR bool test_constexpr() { -// int ia[] = {1, 2, 3, 4, 5}; -// int ic[] = {6, 6, 6, 6, 6, 6, 6}; -// -// auto p = std::copy_n(std::begin(ia), 4, std::begin(ic)); -// return std::equal(std::begin(ic), p, std::begin(ia)) -// && std::all_of(p, std::end(ic), [](int a){return a == 6;}) -// ; -// } -// #endif - typedef UserDefinedIntegral<unsigned> UDI; template <class InIter, class OutIter> -void -test() +TEST_CONSTEXPR_CXX20 void +test_copy_n() { const unsigned N = 1000; int ia[N]; @@ -49,46 +37,54 @@ test() assert(ia[i] == ib[i]); } +TEST_CONSTEXPR_CXX20 bool +test() +{ + test_copy_n<input_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, int*>(); + + test_copy_n<forward_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, int*>(); + + test_copy_n<bidirectional_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, int*>(); + + test_copy_n<random_access_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, int*>(); + + test_copy_n<const int*, output_iterator<int*> >(); + test_copy_n<const int*, input_iterator<int*> >(); + test_copy_n<const int*, forward_iterator<int*> >(); + test_copy_n<const int*, bidirectional_iterator<int*> >(); + test_copy_n<const int*, random_access_iterator<int*> >(); + test_copy_n<const int*, int*>(); + + return true; +} + int main(int, char**) { - test<input_iterator<const int*>, output_iterator<int*> >(); - test<input_iterator<const int*>, input_iterator<int*> >(); - test<input_iterator<const int*>, forward_iterator<int*> >(); - test<input_iterator<const int*>, bidirectional_iterator<int*> >(); - test<input_iterator<const int*>, random_access_iterator<int*> >(); - test<input_iterator<const int*>, int*>(); - - test<forward_iterator<const int*>, output_iterator<int*> >(); - test<forward_iterator<const int*>, input_iterator<int*> >(); - test<forward_iterator<const int*>, forward_iterator<int*> >(); - test<forward_iterator<const int*>, bidirectional_iterator<int*> >(); - test<forward_iterator<const int*>, random_access_iterator<int*> >(); - test<forward_iterator<const int*>, int*>(); - - test<bidirectional_iterator<const int*>, output_iterator<int*> >(); - test<bidirectional_iterator<const int*>, input_iterator<int*> >(); - test<bidirectional_iterator<const int*>, forward_iterator<int*> >(); - test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); - test<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); - test<bidirectional_iterator<const int*>, int*>(); - - test<random_access_iterator<const int*>, output_iterator<int*> >(); - test<random_access_iterator<const int*>, input_iterator<int*> >(); - test<random_access_iterator<const int*>, forward_iterator<int*> >(); - test<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); - test<random_access_iterator<const int*>, random_access_iterator<int*> >(); - test<random_access_iterator<const int*>, int*>(); - - test<const int*, output_iterator<int*> >(); - test<const int*, input_iterator<int*> >(); - test<const int*, forward_iterator<int*> >(); - test<const int*, bidirectional_iterator<int*> >(); - test<const int*, random_access_iterator<int*> >(); - test<const int*, int*>(); - -// #if TEST_STD_VER > 17 -// static_assert(test_constexpr()); -// #endif + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif return 0; } |