diff --git a/stl/inc/ranges b/stl/inc/ranges index 37e9db92824..063e479705b 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -1705,10 +1705,10 @@ namespace ranges { struct _Repeat_fn { template _NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(_Ty&& _Value) _CONST_CALL_OPERATOR - noexcept(noexcept(repeat_view(_STD forward<_Ty>(_Value)))) - requires requires { repeat_view(_STD forward<_Ty>(_Value)); } + noexcept(noexcept(repeat_view>(_STD forward<_Ty>(_Value)))) + requires requires { repeat_view>(_STD forward<_Ty>(_Value)); } { - return repeat_view(_STD forward<_Ty>(_Value)); + return repeat_view>(_STD forward<_Ty>(_Value)); } template diff --git a/tests/std/tests/P2474R2_views_repeat/test.cpp b/tests/std/tests/P2474R2_views_repeat/test.cpp index ed198b9ab03..c559b170407 100644 --- a/tests/std/tests/P2474R2_views_repeat/test.cpp +++ b/tests/std/tests/P2474R2_views_repeat/test.cpp @@ -363,14 +363,19 @@ constexpr bool test() { return true; } -// Check LWG-3875 +// Check LWG-3875 "std::ranges::repeat_view::iterator may be ill-formed" static_assert(CanViewRepeat); static_assert(CanViewRepeat); static_assert(CanViewRepeat); static_assert( !CanViewRepeat); // _Unsigned128 does not satisfy 'integer-like-with-usable-difference-type' -// Check GH-3392 +// Check LWG-4054 "Repeating a repeat_view should repeat the view" +static_assert(is_same_v>>); +static_assert(is_same_v>); +static_assert(is_same_v>); + +// Check GH-3392 ": views::repeat(...) | views::take(...) is not always a valid range" static_assert(ranges::range); static_assert(ranges::range);