diff --git a/stl/inc/ranges b/stl/inc/ranges index 08e1bfc39a5..98b9df3b14f 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -1927,7 +1927,7 @@ namespace ranges { if constexpr (random_access_range<_Vw>) { return _RANGES begin(_Range); } else { - const auto _Size = size(); + const auto _Size = static_cast>(size()); return counted_iterator{_RANGES begin(_Range), _Size}; } } else { @@ -1940,7 +1940,7 @@ namespace ranges { if constexpr (random_access_range) { return _RANGES begin(_Range); } else { - const auto _Size = size(); + const auto _Size = static_cast>(size()); return counted_iterator{_RANGES begin(_Range), _Size}; } } else { diff --git a/tests/std/tests/P0896R4_views_take/test.cpp b/tests/std/tests/P0896R4_views_take/test.cpp index 34fb9e3a305..43633d922d1 100644 --- a/tests/std/tests/P0896R4_views_take/test.cpp +++ b/tests/std/tests/P0896R4_views_take/test.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -510,6 +511,13 @@ constexpr void output_range_test() { } } +void test_DevCom_1397309() { + constexpr int expected[] = {4, 8}; + const map values{{4, "Hello"sv}, {8, "Beautiful"sv}, {10, "World"sv}}; + + assert(ranges::equal(values | ranges::views::take(2) | ranges::views::keys, expected)); +} + int main() { // Validate views { // ... copyable @@ -558,4 +566,6 @@ int main() { STATIC_ASSERT((instantiation_test(), true)); instantiation_test(); + + test_DevCom_1397309(); }