From 07bf810d8fc614b9d40da559e5563f4f788a4607 Mon Sep 17 00:00:00 2001 From: Casey Carter Date: Fri, 4 Sep 2020 20:45:44 -0700 Subject: [PATCH] Integrate P1391 into views::take and views::drop Completes a bit more of WG21-P1739 "Avoiding Template Bloat For Ranges". Annotate implementation of P1391R4 and partial implementation of P1739R4 in ``. --- stl/inc/ranges | 2 +- stl/inc/yvals_core.h | 3 +++ tests/std/tests/P0896R4_views_drop/test.cpp | 7 +++---- tests/std/tests/P0896R4_views_take/test.cpp | 7 +++---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/stl/inc/ranges b/stl/inc/ranges index 1f050170e0c..0abfedeb742 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -1655,7 +1655,7 @@ namespace ranges { template concept _Reconstructible_range = random_access_range<_Rng> && sized_range<_Rng> && (_Is_dynamic_span> - // || _Is_specialization_v, basic_string_view> // TRANSITION, P1391R4 + || _Is_specialization_v, basic_string_view> // || _Is_specialization_v, iota_view> // TRANSITION, iota_view || _Is_subrange>); diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index e20c9459839..4ecbe622dce 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -193,6 +193,7 @@ // (partially implemented) // P1248R1 Fixing Relations // P1357R1 is_bounded_array, is_unbounded_array +// P1391R4 Range Constructor For string_view // P1394R4 Range Constructor For span // P1423R3 char8_t Backward Compatibility Remediation // P1456R1 Move-Only Views @@ -202,6 +203,8 @@ // P1651R0 bind_front() Should Not Unwrap reference_wrapper // P1690R1 Refining Heterogeneous Lookup For Unordered Containers // P1716R3 Range Comparison Algorithms Are Over-Constrained +// P1739R4 Avoiding Template Bloat For Ranges +// (partially implemented) // P1754R1 Rename Concepts To standard_case // P1865R1 Adding max() To latch And barrier // P1870R1 Rename forwarding-range To borrowed_range (Was safe_range before LWG-3379) diff --git a/tests/std/tests/P0896R4_views_drop/test.cpp b/tests/std/tests/P0896R4_views_drop/test.cpp index a7ebf021ece..aae2ce6f41b 100644 --- a/tests/std/tests/P0896R4_views_drop/test.cpp +++ b/tests/std/tests/P0896R4_views_drop/test.cpp @@ -45,7 +45,7 @@ concept reconstructible = ranges::random_access_range && ranges::sized_range && (is_empty_view || is_dynamic_span - // || is_string_view // TRANSITION, P1391R4 + || is_string_view // || is_iota_view // TRANSITION, iota_view || is_subrange); // clang-format on @@ -469,9 +469,8 @@ int main() { STATIC_ASSERT(test_one(views::empty, span{})); test_one(views::empty, span{}); - // TRANSITION, P1391R4 - // STATIC_ASSERT(test_one(basic_string_view{some_ints}, only_four_ints)); - // test_one(basic_string_view{some_ints}, only_four_ints); + STATIC_ASSERT(test_one(basic_string_view{ranges::begin(some_ints), ranges::end(some_ints)}, only_four_ints)); + test_one(basic_string_view{ranges::begin(some_ints), ranges::end(some_ints)}, only_four_ints); // TRANSITION, iota_view // STATIC_ASSERT(test_one(ranges::iota_view{0, 8}, only_four_ints)); diff --git a/tests/std/tests/P0896R4_views_take/test.cpp b/tests/std/tests/P0896R4_views_take/test.cpp index 56bc5334922..b0d35fc3900 100644 --- a/tests/std/tests/P0896R4_views_take/test.cpp +++ b/tests/std/tests/P0896R4_views_take/test.cpp @@ -45,7 +45,7 @@ concept reconstructible = ranges::random_access_range && ranges::sized_range && (is_empty_view || is_dynamic_span - // || is_string_view // TRANSITION, P1391R4 + || is_string_view // || is_iota_view // TRANSITION, iota_view || is_subrange); // clang-format on @@ -492,9 +492,8 @@ int main() { STATIC_ASSERT(test_one(views::empty, span{})); test_one(views::empty, span{}); - // TRANSITION, P1391R4 - // STATIC_ASSERT(test_one(basic_string_view{some_ints}, only_four_ints)); - // test_one(basic_string_view{some_ints}, only_four_ints); + STATIC_ASSERT(test_one(basic_string_view{ranges::begin(some_ints), ranges::end(some_ints)}, only_four_ints)); + test_one(basic_string_view{ranges::begin(some_ints), ranges::end(some_ints)}, only_four_ints); // TRANSITION, iota_view // STATIC_ASSERT(test_one(ranges::iota_view{0, 8}, only_four_ints));