diff --git a/stl/inc/ranges b/stl/inc/ranges index ec72cc0c8aa..3390231f3fc 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -1708,8 +1708,8 @@ namespace ranges { } }; - template - repeat_view(_Ty, _Bo) -> repeat_view<_Ty, _Bo>; + template + repeat_view(_Ty, _Bo = _Bo()) -> repeat_view<_Ty, _Bo>; namespace views { struct _Repeat_fn { diff --git a/tests/std/tests/P2474R2_views_repeat/test.cpp b/tests/std/tests/P2474R2_views_repeat/test.cpp index c559b170407..5723478a1c4 100644 --- a/tests/std/tests/P2474R2_views_repeat/test.cpp +++ b/tests/std/tests/P2474R2_views_repeat/test.cpp @@ -360,6 +360,16 @@ constexpr bool test() { test_iterator_arithmetic(); test_iterator_arithmetic<_Signed128>(); + // GH-4507: LWG-4053 Unary call to std::views::repeat does not decay the argument + { + using RPV = ranges::repeat_view; + + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + } + return true; }