From 78f990ab1ef0ac684385da7cfd55fff6484c5618 Mon Sep 17 00:00:00 2001 From: Peng Liu Date: Sun, 9 Feb 2025 22:49:18 -0500 Subject: [PATCH 1/2] Refactor tests for rotate and rotate_copy --- .../alg.rotate/pstl.rotate_copy.pass.cpp | 1 + .../alg.rotate/ranges.rotate_copy.pass.cpp | 43 +-- .../alg.rotate/ranges_rotate.pass.cpp | 60 ++-- .../alg.rotate/rotate.pass.cpp | 303 +++++++++--------- .../alg.rotate/rotate_copy.pass.cpp | 247 +++++++------- libcxx/test/support/test_iterators.h | 7 + 6 files changed, 319 insertions(+), 342 deletions(-) diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/pstl.rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/pstl.rotate_copy.pass.cpp index 989313cc6d68d..5d1e34150c472 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/pstl.rotate_copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/pstl.rotate_copy.pass.cpp @@ -27,6 +27,7 @@ #include "test_macros.h" #include "test_execution_policies.h" #include "test_iterators.h" +#include "type_algorithms.h" template struct Test { diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp index 58b0f75d9b5f2..35856a65cc703 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp @@ -26,9 +26,11 @@ #include "almost_satisfies_types.h" #include "test_iterators.h" +#include "type_algorithms.h" template > -concept HasRotateCopyIt = requires(Iter first, Sent last, Out out) { std::ranges::rotate_copy(first, first, last, out); }; +concept HasRotateCopyIt = + requires(Iter first, Sent last, Out out) { std::ranges::rotate_copy(first, first, last, out); }; template concept HasRotateCopyR = requires(Range range, Out out) { std::ranges::rotate_copy(range, nullptr, out); }; @@ -54,11 +56,8 @@ template constexpr void test(std::array value, std::size_t middle, std::array expected) { { std::array out; - std::same_as> decltype(auto) ret = - std::ranges::rotate_copy(Iter(value.data()), - Iter(value.data() + middle), - Sent(Iter(value.data() + value.size())), - OutIter(out.data())); + std::same_as> decltype(auto) ret = std::ranges::rotate_copy( + Iter(value.data()), Iter(value.data() + middle), Sent(Iter(value.data() + value.size())), OutIter(out.data())); assert(base(ret.in) == value.data() + value.size()); assert(base(ret.out) == out.data() + out.size()); assert(out == expected); @@ -74,7 +73,7 @@ constexpr void test(std::array value, std::size_t middle, std::array +template constexpr void test_iterators() { // simple test test({1, 2, 3, 4}, 2, {3, 4, 1, 2}); @@ -101,41 +100,33 @@ constexpr void test_iterators() { test({1, 2, 3, 4, 5, 6, 7}, 7, {1, 2, 3, 4, 5, 6, 7}); } -template -constexpr void test_out_iterators() { - test_iterators, Sent>(); - test_iterators, Sent>(); - test_iterators, Sent>(); - test_iterators, Sent>(); - test_iterators, Sent>(); - test_iterators(); -} - constexpr bool test() { - test_out_iterators>(); - test_out_iterators>(); - test_out_iterators>(); - test_out_iterators>(); - test_out_iterators(); - test_out_iterators(); + types::for_each(types::forward_iterator_list(), []() { + types::for_each(types::cpp20_output_iterator_list(), []() { + test_iterators(); + }); + }); { struct AssignmentCounter { int* counter; constexpr AssignmentCounter(int* counter_) : counter(counter_) {} - constexpr AssignmentCounter& operator=(const AssignmentCounter&) { ++*counter; return *this; } + constexpr AssignmentCounter& operator=(const AssignmentCounter&) { + ++*counter; + return *this; + } }; { - int c = 0; + int c = 0; AssignmentCounter a[] = {&c, &c, &c, &c}; AssignmentCounter b[] = {&c, &c, &c, &c}; std::ranges::rotate_copy(a, a + 2, a + 4, b); assert(c == 4); } { - int c = 0; + int c = 0; AssignmentCounter a[] = {&c, &c, &c, &c}; AssignmentCounter b[] = {&c, &c, &c, &c}; std::ranges::rotate_copy(a, a + 2, b); diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp index 1506ce79b5dbd..56d0dfaf9ee27 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp @@ -24,15 +24,15 @@ #include "almost_satisfies_types.h" #include "test_iterators.h" +#include "type_algorithms.h" // Test constraints of the (iterator, sentinel) overload. // ====================================================== template -concept HasRotateIter = - requires(Iter&& iter, Sent&& sent) { - std::ranges::rotate(std::forward(iter), std::forward(iter), std::forward(sent)); - }; +concept HasRotateIter = requires(Iter&& iter, Sent&& sent) { + std::ranges::rotate(std::forward(iter), std::forward(iter), std::forward(sent)); +}; static_assert(HasRotateIter); @@ -48,10 +48,9 @@ static_assert(!HasRotateIter); // ========================================= template -concept HasRotateRange = - requires(Range&& range, std::ranges::iterator_t iter) { - std::ranges::rotate(std::forward(range), iter); - }; +concept HasRotateRange = requires(Range&& range, std::ranges::iterator_t iter) { + std::ranges::rotate(std::forward(range), iter); +}; template using R = UncheckedRange; @@ -73,10 +72,10 @@ constexpr void test_one(const std::array input, std::size_t mid_index, s assert(mid_index <= N); { // (iterator, sentinel) overload. - auto in = input; + auto in = input; auto begin = Iter(in.data()); - auto mid = Iter(in.data() + mid_index); - auto end = Sent(Iter(in.data() + in.size())); + auto mid = Iter(in.data() + mid_index); + auto end = Sent(Iter(in.data() + in.size())); std::same_as> decltype(auto) result = std::ranges::rotate(begin, mid, end); assert(base(result.begin()) == in.data() + in.size() - mid_index); @@ -85,10 +84,10 @@ constexpr void test_one(const std::array input, std::size_t mid_index, s } { // (range) overload. - auto in = input; + auto in = input; auto begin = Iter(in.data()); - auto mid = Iter(in.data() + mid_index); - auto end = Sent(Iter(in.data() + in.size())); + auto mid = Iter(in.data() + mid_index); + auto end = Sent(Iter(in.data() + in.size())); auto range = std::ranges::subrange(std::move(begin), std::move(end)); std::same_as> decltype(auto) result = std::ranges::rotate(range, mid); @@ -132,32 +131,21 @@ constexpr void test_iter_sent() { test_one({1, 2, 3, 4, 5, 6, 7}, 7, {1, 2, 3, 4, 5, 6, 7}); } -template -constexpr void test_iter() { - test_iter_sent(); - test_iter_sent>(); -} - -constexpr void test_iterators() { - test_iter>(); - test_iter>(); - test_iter>(); - test_iter>(); - test_iter(); -} - constexpr bool test() { - test_iterators(); + types::for_each(types::forward_iterator_list(), []() { + test_iter_sent(); + test_iter_sent>(); + }); { // Complexity: at most `last - first` swaps. const std::array input = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - auto expected = static_cast(input.size()); + auto expected = static_cast(input.size()); { - auto in = input; - int swaps = 0; + auto in = input; + int swaps = 0; auto begin = adl::Iterator::TrackSwaps(in.data(), swaps); - auto end = adl::Iterator::TrackSwaps(in.data() + in.size(), swaps); + auto end = adl::Iterator::TrackSwaps(in.data() + in.size(), swaps); for (std::size_t mid = 0; mid != input.size(); ++mid) { std::ranges::rotate(begin, begin + mid, end); @@ -166,10 +154,10 @@ constexpr bool test() { } { - auto in = input; - int swaps = 0; + auto in = input; + int swaps = 0; auto begin = adl::Iterator::TrackSwaps(in.data(), swaps); - auto end = adl::Iterator::TrackSwaps(in.data() + in.size(), swaps); + auto end = adl::Iterator::TrackSwaps(in.data() + in.size(), swaps); auto range = std::ranges::subrange(begin, end); for (std::size_t mid = 0; mid != input.size(); ++mid) { diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp index 7bbf3abd43dc5..91a74786216ec 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp @@ -9,141 +9,141 @@ // // template -// Iter -// rotate(Iter first, Iter middle, Iter last); +// Iter rotate(Iter first, Iter middle, Iter last); // constexpr since C++20 #include #include #include +#include #include "test_macros.h" #include "test_iterators.h" +#include "type_algorithms.h" -template -TEST_CONSTEXPR_CXX17 bool -test() -{ - int ia[] = {0}; - const int sa = static_cast(sizeof(ia)/sizeof(ia[0])); - Iter r = std::rotate(Iter(ia), Iter(ia), Iter(ia)); +struct TestIter { + template + TEST_CONSTEXPR_CXX20 void operator()() const { + int ia[] = {0}; + const int sa = static_cast(sizeof(ia) / sizeof(ia[0])); + Iter r = std::rotate(Iter(ia), Iter(ia), Iter(ia)); assert(base(r) == ia); assert(ia[0] == 0); - r = std::rotate(Iter(ia), Iter(ia), Iter(ia+sa)); - assert(base(r) == ia+sa); + r = std::rotate(Iter(ia), Iter(ia), Iter(ia + sa)); + assert(base(r) == ia + sa); assert(ia[0] == 0); - r = std::rotate(Iter(ia), Iter(ia+sa), Iter(ia+sa)); + r = std::rotate(Iter(ia), Iter(ia + sa), Iter(ia + sa)); assert(base(r) == ia); assert(ia[0] == 0); - int ib[] = {0, 1}; - const int sb = static_cast(sizeof(ib)/sizeof(ib[0])); - r = std::rotate(Iter(ib), Iter(ib), Iter(ib+sb)); - assert(base(r) == ib+sb); + int ib[] = {0, 1}; + const int sb = static_cast(sizeof(ib) / sizeof(ib[0])); + r = std::rotate(Iter(ib), Iter(ib), Iter(ib + sb)); + assert(base(r) == ib + sb); assert(ib[0] == 0); assert(ib[1] == 1); - r = std::rotate(Iter(ib), Iter(ib+1), Iter(ib+sb)); - assert(base(r) == ib+1); + r = std::rotate(Iter(ib), Iter(ib + 1), Iter(ib + sb)); + assert(base(r) == ib + 1); assert(ib[0] == 1); assert(ib[1] == 0); - r = std::rotate(Iter(ib), Iter(ib+sb), Iter(ib+sb)); + r = std::rotate(Iter(ib), Iter(ib + sb), Iter(ib + sb)); assert(base(r) == ib); assert(ib[0] == 1); assert(ib[1] == 0); - int ic[] = {0, 1, 2}; - const int sc = static_cast(sizeof(ic)/sizeof(ic[0])); - r = std::rotate(Iter(ic), Iter(ic), Iter(ic+sc)); - assert(base(r) == ic+sc); + int ic[] = {0, 1, 2}; + const int sc = static_cast(sizeof(ic) / sizeof(ic[0])); + r = std::rotate(Iter(ic), Iter(ic), Iter(ic + sc)); + assert(base(r) == ic + sc); assert(ic[0] == 0); assert(ic[1] == 1); assert(ic[2] == 2); - r = std::rotate(Iter(ic), Iter(ic+1), Iter(ic+sc)); - assert(base(r) == ic+2); + r = std::rotate(Iter(ic), Iter(ic + 1), Iter(ic + sc)); + assert(base(r) == ic + 2); assert(ic[0] == 1); assert(ic[1] == 2); assert(ic[2] == 0); - r = std::rotate(Iter(ic), Iter(ic+2), Iter(ic+sc)); - assert(base(r) == ic+1); + r = std::rotate(Iter(ic), Iter(ic + 2), Iter(ic + sc)); + assert(base(r) == ic + 1); assert(ic[0] == 0); assert(ic[1] == 1); assert(ic[2] == 2); - r = std::rotate(Iter(ic), Iter(ic+sc), Iter(ic+sc)); + r = std::rotate(Iter(ic), Iter(ic + sc), Iter(ic + sc)); assert(base(r) == ic); assert(ic[0] == 0); assert(ic[1] == 1); assert(ic[2] == 2); - int id[] = {0, 1, 2, 3}; - const int sd = static_cast(sizeof(id)/sizeof(id[0])); - r = std::rotate(Iter(id), Iter(id), Iter(id+sd)); - assert(base(r) == id+sd); + int id[] = {0, 1, 2, 3}; + const int sd = static_cast(sizeof(id) / sizeof(id[0])); + r = std::rotate(Iter(id), Iter(id), Iter(id + sd)); + assert(base(r) == id + sd); assert(id[0] == 0); assert(id[1] == 1); assert(id[2] == 2); assert(id[3] == 3); - r = std::rotate(Iter(id), Iter(id+1), Iter(id+sd)); - assert(base(r) == id+3); + r = std::rotate(Iter(id), Iter(id + 1), Iter(id + sd)); + assert(base(r) == id + 3); assert(id[0] == 1); assert(id[1] == 2); assert(id[2] == 3); assert(id[3] == 0); - r = std::rotate(Iter(id), Iter(id+2), Iter(id+sd)); - assert(base(r) == id+2); + r = std::rotate(Iter(id), Iter(id + 2), Iter(id + sd)); + assert(base(r) == id + 2); assert(id[0] == 3); assert(id[1] == 0); assert(id[2] == 1); assert(id[3] == 2); - r = std::rotate(Iter(id), Iter(id+3), Iter(id+sd)); - assert(base(r) == id+1); + r = std::rotate(Iter(id), Iter(id + 3), Iter(id + sd)); + assert(base(r) == id + 1); assert(id[0] == 2); assert(id[1] == 3); assert(id[2] == 0); assert(id[3] == 1); - r = std::rotate(Iter(id), Iter(id+sd), Iter(id+sd)); + r = std::rotate(Iter(id), Iter(id + sd), Iter(id + sd)); assert(base(r) == id); assert(id[0] == 2); assert(id[1] == 3); assert(id[2] == 0); assert(id[3] == 1); - int ie[] = {0, 1, 2, 3, 4}; - const int se = static_cast(sizeof(ie)/sizeof(ie[0])); - r = std::rotate(Iter(ie), Iter(ie), Iter(ie+se)); - assert(base(r) == ie+se); + int ie[] = {0, 1, 2, 3, 4}; + const int se = static_cast(sizeof(ie) / sizeof(ie[0])); + r = std::rotate(Iter(ie), Iter(ie), Iter(ie + se)); + assert(base(r) == ie + se); assert(ie[0] == 0); assert(ie[1] == 1); assert(ie[2] == 2); assert(ie[3] == 3); assert(ie[4] == 4); - r = std::rotate(Iter(ie), Iter(ie+1), Iter(ie+se)); - assert(base(r) == ie+4); + r = std::rotate(Iter(ie), Iter(ie + 1), Iter(ie + se)); + assert(base(r) == ie + 4); assert(ie[0] == 1); assert(ie[1] == 2); assert(ie[2] == 3); assert(ie[3] == 4); assert(ie[4] == 0); - r = std::rotate(Iter(ie), Iter(ie+2), Iter(ie+se)); - assert(base(r) == ie+3); + r = std::rotate(Iter(ie), Iter(ie + 2), Iter(ie + se)); + assert(base(r) == ie + 3); assert(ie[0] == 3); assert(ie[1] == 4); assert(ie[2] == 0); assert(ie[3] == 1); assert(ie[4] == 2); - r = std::rotate(Iter(ie), Iter(ie+3), Iter(ie+se)); - assert(base(r) == ie+2); + r = std::rotate(Iter(ie), Iter(ie + 3), Iter(ie + se)); + assert(base(r) == ie + 2); assert(ie[0] == 1); assert(ie[1] == 2); assert(ie[2] == 3); assert(ie[3] == 4); assert(ie[4] == 0); - r = std::rotate(Iter(ie), Iter(ie+4), Iter(ie+se)); - assert(base(r) == ie+1); + r = std::rotate(Iter(ie), Iter(ie + 4), Iter(ie + se)); + assert(base(r) == ie + 1); assert(ie[0] == 0); assert(ie[1] == 1); assert(ie[2] == 2); assert(ie[3] == 3); assert(ie[4] == 4); - r = std::rotate(Iter(ie), Iter(ie+se), Iter(ie+se)); + r = std::rotate(Iter(ie), Iter(ie + se), Iter(ie + se)); assert(base(r) == ie); assert(ie[0] == 0); assert(ie[1] == 1); @@ -151,57 +151,57 @@ test() assert(ie[3] == 3); assert(ie[4] == 4); - int ig[] = {0, 1, 2, 3, 4, 5}; - const int sg = static_cast(sizeof(ig)/sizeof(ig[0])); - r = std::rotate(Iter(ig), Iter(ig), Iter(ig+sg)); - assert(base(r) == ig+sg); + int ig[] = {0, 1, 2, 3, 4, 5}; + const int sg = static_cast(sizeof(ig) / sizeof(ig[0])); + r = std::rotate(Iter(ig), Iter(ig), Iter(ig + sg)); + assert(base(r) == ig + sg); assert(ig[0] == 0); assert(ig[1] == 1); assert(ig[2] == 2); assert(ig[3] == 3); assert(ig[4] == 4); assert(ig[5] == 5); - r = std::rotate(Iter(ig), Iter(ig+1), Iter(ig+sg)); - assert(base(r) == ig+5); + r = std::rotate(Iter(ig), Iter(ig + 1), Iter(ig + sg)); + assert(base(r) == ig + 5); assert(ig[0] == 1); assert(ig[1] == 2); assert(ig[2] == 3); assert(ig[3] == 4); assert(ig[4] == 5); assert(ig[5] == 0); - r = std::rotate(Iter(ig), Iter(ig+2), Iter(ig+sg)); - assert(base(r) == ig+4); + r = std::rotate(Iter(ig), Iter(ig + 2), Iter(ig + sg)); + assert(base(r) == ig + 4); assert(ig[0] == 3); assert(ig[1] == 4); assert(ig[2] == 5); assert(ig[3] == 0); assert(ig[4] == 1); assert(ig[5] == 2); - r = std::rotate(Iter(ig), Iter(ig+3), Iter(ig+sg)); - assert(base(r) == ig+3); + r = std::rotate(Iter(ig), Iter(ig + 3), Iter(ig + sg)); + assert(base(r) == ig + 3); assert(ig[0] == 0); assert(ig[1] == 1); assert(ig[2] == 2); assert(ig[3] == 3); assert(ig[4] == 4); assert(ig[5] == 5); - r = std::rotate(Iter(ig), Iter(ig+4), Iter(ig+sg)); - assert(base(r) == ig+2); + r = std::rotate(Iter(ig), Iter(ig + 4), Iter(ig + sg)); + assert(base(r) == ig + 2); assert(ig[0] == 4); assert(ig[1] == 5); assert(ig[2] == 0); assert(ig[3] == 1); assert(ig[4] == 2); assert(ig[5] == 3); - r = std::rotate(Iter(ig), Iter(ig+5), Iter(ig+sg)); - assert(base(r) == ig+1); + r = std::rotate(Iter(ig), Iter(ig + 5), Iter(ig + sg)); + assert(base(r) == ig + 1); assert(ig[0] == 3); assert(ig[1] == 4); assert(ig[2] == 5); assert(ig[3] == 0); assert(ig[4] == 1); assert(ig[5] == 2); - r = std::rotate(Iter(ig), Iter(ig+sg), Iter(ig+sg)); + r = std::rotate(Iter(ig), Iter(ig + sg), Iter(ig + sg)); assert(base(r) == ig); assert(ig[0] == 3); assert(ig[1] == 4); @@ -209,101 +209,99 @@ test() assert(ig[3] == 0); assert(ig[4] == 1); assert(ig[5] == 2); - - return true; -} + } +}; #if TEST_STD_VER >= 11 -template -void -test1() -{ +struct TestUniquePtr { + template + TEST_CONSTEXPR_CXX23 void operator()() const { std::unique_ptr ia[1]; - const int sa = static_cast(sizeof(ia)/sizeof(ia[0])); + const int sa = static_cast(sizeof(ia) / sizeof(ia[0])); for (int i = 0; i < sa; ++i) - ia[i].reset(new int(i)); + ia[i].reset(new int(i)); Iter r = std::rotate(Iter(ia), Iter(ia), Iter(ia)); assert(base(r) == ia); assert(*ia[0] == 0); - r = std::rotate(Iter(ia), Iter(ia), Iter(ia+sa)); - assert(base(r) == ia+sa); + r = std::rotate(Iter(ia), Iter(ia), Iter(ia + sa)); + assert(base(r) == ia + sa); assert(*ia[0] == 0); - r = std::rotate(Iter(ia), Iter(ia+sa), Iter(ia+sa)); + r = std::rotate(Iter(ia), Iter(ia + sa), Iter(ia + sa)); assert(base(r) == ia); assert(*ia[0] == 0); std::unique_ptr ib[2]; - const int sb = static_cast(sizeof(ib)/sizeof(ib[0])); + const int sb = static_cast(sizeof(ib) / sizeof(ib[0])); for (int i = 0; i < sb; ++i) - ib[i].reset(new int(i)); - r = std::rotate(Iter(ib), Iter(ib), Iter(ib+sb)); - assert(base(r) == ib+sb); + ib[i].reset(new int(i)); + r = std::rotate(Iter(ib), Iter(ib), Iter(ib + sb)); + assert(base(r) == ib + sb); assert(*ib[0] == 0); assert(*ib[1] == 1); - r = std::rotate(Iter(ib), Iter(ib+1), Iter(ib+sb)); - assert(base(r) == ib+1); + r = std::rotate(Iter(ib), Iter(ib + 1), Iter(ib + sb)); + assert(base(r) == ib + 1); assert(*ib[0] == 1); assert(*ib[1] == 0); - r = std::rotate(Iter(ib), Iter(ib+sb), Iter(ib+sb)); + r = std::rotate(Iter(ib), Iter(ib + sb), Iter(ib + sb)); assert(base(r) == ib); assert(*ib[0] == 1); assert(*ib[1] == 0); std::unique_ptr ic[3]; - const int sc = static_cast(sizeof(ic)/sizeof(ic[0])); + const int sc = static_cast(sizeof(ic) / sizeof(ic[0])); for (int i = 0; i < sc; ++i) - ic[i].reset(new int(i)); - r = std::rotate(Iter(ic), Iter(ic), Iter(ic+sc)); - assert(base(r) == ic+sc); + ic[i].reset(new int(i)); + r = std::rotate(Iter(ic), Iter(ic), Iter(ic + sc)); + assert(base(r) == ic + sc); assert(*ic[0] == 0); assert(*ic[1] == 1); assert(*ic[2] == 2); - r = std::rotate(Iter(ic), Iter(ic+1), Iter(ic+sc)); - assert(base(r) == ic+2); + r = std::rotate(Iter(ic), Iter(ic + 1), Iter(ic + sc)); + assert(base(r) == ic + 2); assert(*ic[0] == 1); assert(*ic[1] == 2); assert(*ic[2] == 0); - r = std::rotate(Iter(ic), Iter(ic+2), Iter(ic+sc)); - assert(base(r) == ic+1); + r = std::rotate(Iter(ic), Iter(ic + 2), Iter(ic + sc)); + assert(base(r) == ic + 1); assert(*ic[0] == 0); assert(*ic[1] == 1); assert(*ic[2] == 2); - r = std::rotate(Iter(ic), Iter(ic+sc), Iter(ic+sc)); + r = std::rotate(Iter(ic), Iter(ic + sc), Iter(ic + sc)); assert(base(r) == ic); assert(*ic[0] == 0); assert(*ic[1] == 1); assert(*ic[2] == 2); std::unique_ptr id[4]; - const int sd = static_cast(sizeof(id)/sizeof(id[0])); + const int sd = static_cast(sizeof(id) / sizeof(id[0])); for (int i = 0; i < sd; ++i) - id[i].reset(new int(i)); - r = std::rotate(Iter(id), Iter(id), Iter(id+sd)); - assert(base(r) == id+sd); + id[i].reset(new int(i)); + r = std::rotate(Iter(id), Iter(id), Iter(id + sd)); + assert(base(r) == id + sd); assert(*id[0] == 0); assert(*id[1] == 1); assert(*id[2] == 2); assert(*id[3] == 3); - r = std::rotate(Iter(id), Iter(id+1), Iter(id+sd)); - assert(base(r) == id+3); + r = std::rotate(Iter(id), Iter(id + 1), Iter(id + sd)); + assert(base(r) == id + 3); assert(*id[0] == 1); assert(*id[1] == 2); assert(*id[2] == 3); assert(*id[3] == 0); - r = std::rotate(Iter(id), Iter(id+2), Iter(id+sd)); - assert(base(r) == id+2); + r = std::rotate(Iter(id), Iter(id + 2), Iter(id + sd)); + assert(base(r) == id + 2); assert(*id[0] == 3); assert(*id[1] == 0); assert(*id[2] == 1); assert(*id[3] == 2); - r = std::rotate(Iter(id), Iter(id+3), Iter(id+sd)); - assert(base(r) == id+1); + r = std::rotate(Iter(id), Iter(id + 3), Iter(id + sd)); + assert(base(r) == id + 1); assert(*id[0] == 2); assert(*id[1] == 3); assert(*id[2] == 0); assert(*id[3] == 1); - r = std::rotate(Iter(id), Iter(id+sd), Iter(id+sd)); + r = std::rotate(Iter(id), Iter(id + sd), Iter(id + sd)); assert(base(r) == id); assert(*id[0] == 2); assert(*id[1] == 3); @@ -311,45 +309,45 @@ test1() assert(*id[3] == 1); std::unique_ptr ie[5]; - const int se = static_cast(sizeof(ie)/sizeof(ie[0])); + const int se = static_cast(sizeof(ie) / sizeof(ie[0])); for (int i = 0; i < se; ++i) - ie[i].reset(new int(i)); - r = std::rotate(Iter(ie), Iter(ie), Iter(ie+se)); - assert(base(r) == ie+se); + ie[i].reset(new int(i)); + r = std::rotate(Iter(ie), Iter(ie), Iter(ie + se)); + assert(base(r) == ie + se); assert(*ie[0] == 0); assert(*ie[1] == 1); assert(*ie[2] == 2); assert(*ie[3] == 3); assert(*ie[4] == 4); - r = std::rotate(Iter(ie), Iter(ie+1), Iter(ie+se)); - assert(base(r) == ie+4); + r = std::rotate(Iter(ie), Iter(ie + 1), Iter(ie + se)); + assert(base(r) == ie + 4); assert(*ie[0] == 1); assert(*ie[1] == 2); assert(*ie[2] == 3); assert(*ie[3] == 4); assert(*ie[4] == 0); - r = std::rotate(Iter(ie), Iter(ie+2), Iter(ie+se)); - assert(base(r) == ie+3); + r = std::rotate(Iter(ie), Iter(ie + 2), Iter(ie + se)); + assert(base(r) == ie + 3); assert(*ie[0] == 3); assert(*ie[1] == 4); assert(*ie[2] == 0); assert(*ie[3] == 1); assert(*ie[4] == 2); - r = std::rotate(Iter(ie), Iter(ie+3), Iter(ie+se)); - assert(base(r) == ie+2); + r = std::rotate(Iter(ie), Iter(ie + 3), Iter(ie + se)); + assert(base(r) == ie + 2); assert(*ie[0] == 1); assert(*ie[1] == 2); assert(*ie[2] == 3); assert(*ie[3] == 4); assert(*ie[4] == 0); - r = std::rotate(Iter(ie), Iter(ie+4), Iter(ie+se)); - assert(base(r) == ie+1); + r = std::rotate(Iter(ie), Iter(ie + 4), Iter(ie + se)); + assert(base(r) == ie + 1); assert(*ie[0] == 0); assert(*ie[1] == 1); assert(*ie[2] == 2); assert(*ie[3] == 3); assert(*ie[4] == 4); - r = std::rotate(Iter(ie), Iter(ie+se), Iter(ie+se)); + r = std::rotate(Iter(ie), Iter(ie + se), Iter(ie + se)); assert(base(r) == ie); assert(*ie[0] == 0); assert(*ie[1] == 1); @@ -358,58 +356,58 @@ test1() assert(*ie[4] == 4); std::unique_ptr ig[6]; - const int sg = static_cast(sizeof(ig)/sizeof(ig[0])); + const int sg = static_cast(sizeof(ig) / sizeof(ig[0])); for (int i = 0; i < sg; ++i) - ig[i].reset(new int(i)); - r = std::rotate(Iter(ig), Iter(ig), Iter(ig+sg)); - assert(base(r) == ig+sg); + ig[i].reset(new int(i)); + r = std::rotate(Iter(ig), Iter(ig), Iter(ig + sg)); + assert(base(r) == ig + sg); assert(*ig[0] == 0); assert(*ig[1] == 1); assert(*ig[2] == 2); assert(*ig[3] == 3); assert(*ig[4] == 4); assert(*ig[5] == 5); - r = std::rotate(Iter(ig), Iter(ig+1), Iter(ig+sg)); - assert(base(r) == ig+5); + r = std::rotate(Iter(ig), Iter(ig + 1), Iter(ig + sg)); + assert(base(r) == ig + 5); assert(*ig[0] == 1); assert(*ig[1] == 2); assert(*ig[2] == 3); assert(*ig[3] == 4); assert(*ig[4] == 5); assert(*ig[5] == 0); - r = std::rotate(Iter(ig), Iter(ig+2), Iter(ig+sg)); - assert(base(r) == ig+4); + r = std::rotate(Iter(ig), Iter(ig + 2), Iter(ig + sg)); + assert(base(r) == ig + 4); assert(*ig[0] == 3); assert(*ig[1] == 4); assert(*ig[2] == 5); assert(*ig[3] == 0); assert(*ig[4] == 1); assert(*ig[5] == 2); - r = std::rotate(Iter(ig), Iter(ig+3), Iter(ig+sg)); - assert(base(r) == ig+3); + r = std::rotate(Iter(ig), Iter(ig + 3), Iter(ig + sg)); + assert(base(r) == ig + 3); assert(*ig[0] == 0); assert(*ig[1] == 1); assert(*ig[2] == 2); assert(*ig[3] == 3); assert(*ig[4] == 4); assert(*ig[5] == 5); - r = std::rotate(Iter(ig), Iter(ig+4), Iter(ig+sg)); - assert(base(r) == ig+2); + r = std::rotate(Iter(ig), Iter(ig + 4), Iter(ig + sg)); + assert(base(r) == ig + 2); assert(*ig[0] == 4); assert(*ig[1] == 5); assert(*ig[2] == 0); assert(*ig[3] == 1); assert(*ig[4] == 2); assert(*ig[5] == 3); - r = std::rotate(Iter(ig), Iter(ig+5), Iter(ig+sg)); - assert(base(r) == ig+1); + r = std::rotate(Iter(ig), Iter(ig + 5), Iter(ig + sg)); + assert(base(r) == ig + 1); assert(*ig[0] == 3); assert(*ig[1] == 4); assert(*ig[2] == 5); assert(*ig[3] == 0); assert(*ig[4] == 1); assert(*ig[5] == 2); - r = std::rotate(Iter(ig), Iter(ig+sg), Iter(ig+sg)); + r = std::rotate(Iter(ig), Iter(ig + sg), Iter(ig + sg)); assert(base(r) == ig); assert(*ig[0] == 3); assert(*ig[1] == 4); @@ -417,32 +415,31 @@ test1() assert(*ig[3] == 0); assert(*ig[4] == 1); assert(*ig[5] == 2); -} + } +}; #endif // TEST_STD_VER >= 11 -int main(int, char**) -{ - test >(); - test >(); - test >(); - test(); +TEST_CONSTEXPR_CXX20 bool test() { + types::for_each(types::forward_iterator_list(), TestIter()); -#if TEST_STD_VER >= 11 +#if TEST_STD_VER >= 11 && TEST_STD_VER <= 17 + types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); +#elif TEST_STD_VER == 20 + if (!std::is_constant_evaluated()) + types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); +#elif TEST_STD_VER >= 23 + types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); +#endif - test1*> >(); - test1*> >(); - test1*> >(); - test1*>(); + return true; +} +int main(int, char**) { + test(); +#if TEST_STD_VER >= 20 + static_assert(test()); #endif -#if TEST_STD_VER > 17 - static_assert(test >()); - static_assert(test >()); - static_assert(test >()); - static_assert(test()); -#endif // TEST_STD_VER > 17 - return 0; } diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp index c19f44a6d7eeb..f975afed282b1 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp @@ -9,7 +9,7 @@ // // template OutIter> -// constexpr OutIter // constexpr after C++17 +// constexpr OutIter // constexpr since C++20 // rotate_copy(InIter first, InIter middle, InIter last, OutIter result); #include @@ -17,140 +17,133 @@ #include "test_macros.h" #include "test_iterators.h" +#include "type_algorithms.h" - -template -TEST_CONSTEXPR_CXX20 void test() { - int ia[] = {0, 1, 2, 3}; - const unsigned sa = sizeof(ia) / sizeof(ia[0]); - int ib[sa] = {0}; - - OutIter r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia), OutIter(ib)); - assert(base(r) == ib); - - r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 1), OutIter(ib)); - assert(base(r) == ib + 1); - assert(ib[0] == 0); - - r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 1), OutIter(ib)); - assert(base(r) == ib + 1); - assert(ib[0] == 0); - - r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 2), OutIter(ib)); - assert(base(r) == ib + 2); - assert(ib[0] == 0); - assert(ib[1] == 1); - - r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 2), OutIter(ib)); - assert(base(r) == ib + 2); - assert(ib[0] == 1); - assert(ib[1] == 0); - - r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 2), OutIter(ib)); - assert(base(r) == ib + 2); - assert(ib[0] == 0); - assert(ib[1] == 1); - - r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 3), OutIter(ib)); - assert(base(r) == ib + 3); - assert(ib[0] == 0); - assert(ib[1] == 1); - assert(ib[2] == 2); - - r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 3), OutIter(ib)); - assert(base(r) == ib + 3); - assert(ib[0] == 1); - assert(ib[1] == 2); - assert(ib[2] == 0); - - r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 3), OutIter(ib)); - assert(base(r) == ib + 3); - assert(ib[0] == 2); - assert(ib[1] == 0); - assert(ib[2] == 1); - - r = std::rotate_copy(InIter(ia), InIter(ia + 3), InIter(ia + 3), OutIter(ib)); - assert(base(r) == ib + 3); - assert(ib[0] == 0); - assert(ib[1] == 1); - assert(ib[2] == 2); - - r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 4), OutIter(ib)); - assert(base(r) == ib + 4); - assert(ib[0] == 0); - assert(ib[1] == 1); - assert(ib[2] == 2); - assert(ib[3] == 3); - - r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 4), OutIter(ib)); - assert(base(r) == ib + 4); - assert(ib[0] == 1); - assert(ib[1] == 2); - assert(ib[2] == 3); - assert(ib[3] == 0); - - r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 4), OutIter(ib)); - assert(base(r) == ib + 4); - assert(ib[0] == 2); - assert(ib[1] == 3); - assert(ib[2] == 0); - assert(ib[3] == 1); - - r = std::rotate_copy(InIter(ia), InIter(ia + 3), InIter(ia + 4), OutIter(ib)); - assert(base(r) == ib + 4); - assert(ib[0] == 3); - assert(ib[1] == 0); - assert(ib[2] == 1); - assert(ib[3] == 2); - - r = std::rotate_copy(InIter(ia), InIter(ia + 4), InIter(ia + 4), OutIter(ib)); - assert(base(r) == ib + 4); - assert(ib[0] == 0); - assert(ib[1] == 1); - assert(ib[2] == 2); - assert(ib[3] == 3); - - { - int ints[] = {1, 3, 5, 2, 5, 6}; - int const n_ints = sizeof(ints)/sizeof(int); - int zeros[n_ints] = {0}; - - const std::size_t N = 2; - const auto middle = std::begin(ints) + N; - auto it = std::rotate_copy(std::begin(ints), middle, std::end(ints), std::begin(zeros)); - assert(std::distance(std::begin(zeros), it) == n_ints); - assert(std::equal(std::begin(ints), middle, std::begin(zeros) + n_ints - N)); - assert(std::equal(middle, std::end(ints), std::begin(zeros))); +struct TestIter { + template + TEST_CONSTEXPR_CXX20 void operator()() const { + types::for_each(types::cpp17_output_iterator_list(), TestImpl()); } -} - -TEST_CONSTEXPR_CXX20 bool all_tests() { - test, cpp17_output_iterator >(); - test, forward_iterator >(); - test, bidirectional_iterator >(); - test, random_access_iterator >(); - test, int*>(); - - test, cpp17_output_iterator >(); - test, forward_iterator >(); - test, bidirectional_iterator >(); - test, random_access_iterator >(); - test, int*>(); - - test >(); - test >(); - test >(); - test >(); - test(); + template + struct TestImpl { + template + TEST_CONSTEXPR_CXX20 void operator()() const { + int ia[] = {0, 1, 2, 3}; + const unsigned sa = sizeof(ia) / sizeof(ia[0]); + int ib[sa] = {0}; + + OutIter r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia), OutIter(ib)); + assert(base(r) == ib); + + r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 1), OutIter(ib)); + assert(base(r) == ib + 1); + assert(ib[0] == 0); + + r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 1), OutIter(ib)); + assert(base(r) == ib + 1); + assert(ib[0] == 0); + + r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 2), OutIter(ib)); + assert(base(r) == ib + 2); + assert(ib[0] == 0); + assert(ib[1] == 1); + + r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 2), OutIter(ib)); + assert(base(r) == ib + 2); + assert(ib[0] == 1); + assert(ib[1] == 0); + + r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 2), OutIter(ib)); + assert(base(r) == ib + 2); + assert(ib[0] == 0); + assert(ib[1] == 1); + + r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 3), OutIter(ib)); + assert(base(r) == ib + 3); + assert(ib[0] == 0); + assert(ib[1] == 1); + assert(ib[2] == 2); + + r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 3), OutIter(ib)); + assert(base(r) == ib + 3); + assert(ib[0] == 1); + assert(ib[1] == 2); + assert(ib[2] == 0); + + r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 3), OutIter(ib)); + assert(base(r) == ib + 3); + assert(ib[0] == 2); + assert(ib[1] == 0); + assert(ib[2] == 1); + + r = std::rotate_copy(InIter(ia), InIter(ia + 3), InIter(ia + 3), OutIter(ib)); + assert(base(r) == ib + 3); + assert(ib[0] == 0); + assert(ib[1] == 1); + assert(ib[2] == 2); + + r = std::rotate_copy(InIter(ia), InIter(ia), InIter(ia + 4), OutIter(ib)); + assert(base(r) == ib + 4); + assert(ib[0] == 0); + assert(ib[1] == 1); + assert(ib[2] == 2); + assert(ib[3] == 3); + + r = std::rotate_copy(InIter(ia), InIter(ia + 1), InIter(ia + 4), OutIter(ib)); + assert(base(r) == ib + 4); + assert(ib[0] == 1); + assert(ib[1] == 2); + assert(ib[2] == 3); + assert(ib[3] == 0); + + r = std::rotate_copy(InIter(ia), InIter(ia + 2), InIter(ia + 4), OutIter(ib)); + assert(base(r) == ib + 4); + assert(ib[0] == 2); + assert(ib[1] == 3); + assert(ib[2] == 0); + assert(ib[3] == 1); + + r = std::rotate_copy(InIter(ia), InIter(ia + 3), InIter(ia + 4), OutIter(ib)); + assert(base(r) == ib + 4); + assert(ib[0] == 3); + assert(ib[1] == 0); + assert(ib[2] == 1); + assert(ib[3] == 2); + + r = std::rotate_copy(InIter(ia), InIter(ia + 4), InIter(ia + 4), OutIter(ib)); + assert(base(r) == ib + 4); + assert(ib[0] == 0); + assert(ib[1] == 1); + assert(ib[2] == 2); + assert(ib[3] == 3); + + { + int ints[] = {1, 3, 5, 2, 5, 6}; + int const n_ints = sizeof(ints) / sizeof(int); + int zeros[n_ints] = {0}; + + const std::size_t N = 2; + const auto middle = std::begin(ints) + N; + auto it = std::rotate_copy(std::begin(ints), middle, std::end(ints), std::begin(zeros)); + assert(std::distance(std::begin(zeros), it) == n_ints); + assert(std::equal(std::begin(ints), middle, std::begin(zeros) + n_ints - N)); + assert(std::equal(middle, std::end(ints), std::begin(zeros))); + } + } + }; +}; + +TEST_CONSTEXPR_CXX20 bool test() { + types::for_each(types::bidirectional_iterator_list(), TestIter()); return true; } int main(int, char**) { - all_tests(); + test(); -#if TEST_STD_VER > 17 - static_assert(all_tests()); +#if TEST_STD_VER >= 20 + static_assert(test()); #endif return 0; } diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h index 419f1d86730b8..030023f92e72b 100644 --- a/libcxx/test/support/test_iterators.h +++ b/libcxx/test/support/test_iterators.h @@ -1664,10 +1664,17 @@ using forward_iterator_list = concatenate_t, ty template using cpp17_input_iterator_list = concatenate_t, type_list > >; +template +using cpp17_output_iterator_list = concatenate_t, type_list > >; + #if TEST_STD_VER >= 20 template using cpp20_input_iterator_list = concatenate_t, type_list, cpp17_input_iterator>>; + +template +using cpp20_output_iterator_list = + concatenate_t, type_list, cpp17_output_iterator>>; #endif } // namespace types From a4bc4009f17e4bbf5ff43107bfdf6ed6b8d17397 Mon Sep 17 00:00:00 2001 From: Peng Liu Date: Fri, 21 Feb 2025 11:58:06 -0500 Subject: [PATCH 2/2] Apply ldionne suggestions --- .../alg.rotate/ranges.rotate_copy.pass.cpp | 10 +++++----- .../alg.rotate/rotate.pass.cpp | 8 ++------ .../alg.rotate/rotate_copy.pass.cpp | 4 +++- libcxx/test/support/test_iterators.h | 7 ------- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp index 35856a65cc703..da39f9521d038 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges.rotate_copy.pass.cpp @@ -73,7 +73,7 @@ constexpr void test(std::array value, std::size_t middle, std::array +template constexpr void test_iterators() { // simple test test({1, 2, 3, 4}, 2, {3, 4, 1, 2}); @@ -101,10 +101,10 @@ constexpr void test_iterators() { } constexpr bool test() { - types::for_each(types::forward_iterator_list(), []() { - types::for_each(types::cpp20_output_iterator_list(), []() { - test_iterators(); - }); + types::for_each(types::forward_iterator_list(), []() { + types::for_each( + types::concatenate_t, types::type_list > >(), + []() { test_iterators(); }); }); { diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp index 91a74786216ec..ce45bb1916816 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp @@ -423,13 +423,9 @@ struct TestUniquePtr { TEST_CONSTEXPR_CXX20 bool test() { types::for_each(types::forward_iterator_list(), TestIter()); -#if TEST_STD_VER >= 11 && TEST_STD_VER <= 17 - types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); -#elif TEST_STD_VER == 20 - if (!std::is_constant_evaluated()) +#if TEST_STD_VER >= 11 + if (TEST_STD_VER >= 23 || !TEST_IS_CONSTANT_EVALUATED) types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); -#elif TEST_STD_VER >= 23 - types::for_each(types::forward_iterator_list*>(), TestUniquePtr()); #endif return true; diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp index f975afed282b1..8e356cc219fe7 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp @@ -22,7 +22,9 @@ struct TestIter { template TEST_CONSTEXPR_CXX20 void operator()() const { - types::for_each(types::cpp17_output_iterator_list(), TestImpl()); + types::for_each( + types::concatenate_t, types::type_list > >(), + TestImpl()); } template diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h index 030023f92e72b..419f1d86730b8 100644 --- a/libcxx/test/support/test_iterators.h +++ b/libcxx/test/support/test_iterators.h @@ -1664,17 +1664,10 @@ using forward_iterator_list = concatenate_t, ty template using cpp17_input_iterator_list = concatenate_t, type_list > >; -template -using cpp17_output_iterator_list = concatenate_t, type_list > >; - #if TEST_STD_VER >= 20 template using cpp20_input_iterator_list = concatenate_t, type_list, cpp17_input_iterator>>; - -template -using cpp20_output_iterator_list = - concatenate_t, type_list, cpp17_output_iterator>>; #endif } // namespace types