On Tue, 1 Jul 2025 at 23:34, Nathan Myers <n...@cantrip.org> wrote:
>
> Make range view constructors explicit, per P2711. Technically, this
> is a breaking change, but it is unlikely to break any production
> code, as reliance on non-explicit construction is unidiomatic..
>
> libstdc++-v3/ChangeLog
>         PR libstdc++/119744
>         * include/std/ranges: view ctors become explicit

The "view ctors become explicit" should be a complete sentence here
please, so an uppercase letter and period.

OK for trunk with the commit message amended like that, thanks.

> ---
>  libstdc++-v3/include/std/ranges | 32 ++++++++++++++++----------------
>  1 file changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
> index 210ac8274fc..f764aa7512e 100644
> --- a/libstdc++-v3/include/std/ranges
> +++ b/libstdc++-v3/include/std/ranges
> @@ -660,7 +660,7 @@ namespace ranges
>        : _M_value(__value)
>        { }
>
> -      constexpr
> +      constexpr explicit
>        iota_view(type_identity_t<_Winc> __value,
>                 type_identity_t<_Bound> __bound)
>        : _M_value(__value), _M_bound(__bound)
> @@ -669,19 +669,19 @@ namespace ranges
>           __glibcxx_assert( bool(__value <= __bound) );
>        }
>
> -      constexpr
> +      constexpr explicit
>        iota_view(_Iterator __first, _Iterator __last)
>         requires same_as<_Winc, _Bound>
>         : iota_view(__first._M_value, __last._M_value)
>        { }
>
> -      constexpr
> +      constexpr explicit
>        iota_view(_Iterator __first, unreachable_sentinel_t __last)
>         requires same_as<_Bound, unreachable_sentinel_t>
>         : iota_view(__first._M_value, __last)
>        { }
>
> -      constexpr
> +      constexpr explicit
>        iota_view(_Iterator __first, _Sentinel __last)
>         requires (!same_as<_Winc, _Bound>) && (!same_as<_Bound, 
> unreachable_sentinel_t>)
>         : iota_view(__first._M_value, __last._M_bound)
> @@ -1811,7 +1811,7 @@ namespace views::__adaptor
>                               && default_initializable<_Pred>)
>         = default;
>
> -      constexpr
> +      constexpr explicit
>        filter_view(_Vp __base, _Pred __pred)
>         : _M_base(std::move(__base)), _M_pred(std::move(__pred))
>        { }
> @@ -2188,7 +2188,7 @@ namespace views::__adaptor
>                                  && default_initializable<_Fp>)
>         = default;
>
> -      constexpr
> +      constexpr explicit
>        transform_view(_Vp __base, _Fp __fun)
>         : _M_base(std::move(__base)), _M_fun(std::move(__fun))
>        { }
> @@ -2323,7 +2323,7 @@ namespace views::__adaptor
>      public:
>        take_view() requires default_initializable<_Vp> = default;
>
> -      constexpr
> +      constexpr explicit
>        take_view(_Vp __base, range_difference_t<_Vp> __count)
>         : _M_base(std::move(__base)), _M_count(std::move(__count))
>        { }
> @@ -2562,7 +2562,7 @@ namespace views::__adaptor
>                                   && default_initializable<_Pred>)
>         = default;
>
> -      constexpr
> +      constexpr explicit
>        take_while_view(_Vp __base, _Pred __pred)
>         : _M_base(std::move(__base)), _M_pred(std::move(__pred))
>        { }
> @@ -2650,7 +2650,7 @@ namespace views::__adaptor
>      public:
>        drop_view() requires default_initializable<_Vp> = default;
>
> -      constexpr
> +      constexpr explicit
>        drop_view(_Vp __base, range_difference_t<_Vp> __count)
>         : _M_base(std::move(__base)), _M_count(__count)
>        { __glibcxx_assert(__count >= 0); }
> @@ -2804,7 +2804,7 @@ namespace views::__adaptor
>                                   && default_initializable<_Pred>)
>         = default;
>
> -      constexpr
> +      constexpr explicit
>        drop_while_view(_Vp __base, _Pred __pred)
>         : _M_base(std::move(__base)), _M_pred(std::move(__pred))
>        { }
> @@ -3641,7 +3641,7 @@ namespace views::__adaptor
>                                   && default_initializable<_Pattern>)
>         = default;
>
> -      constexpr
> +      constexpr explicit
>        lazy_split_view(_Vp __base, _Pattern __pattern)
>         : _M_base(std::move(__base)), _M_pattern(std::move(__pattern))
>        { }
> @@ -3649,7 +3649,7 @@ namespace views::__adaptor
>        template<input_range _Range>
>         requires constructible_from<_Vp, views::all_t<_Range>>
>           && constructible_from<_Pattern, single_view<range_value_t<_Range>>>
> -       constexpr
> +       constexpr explicit
>         lazy_split_view(_Range&& __r, range_value_t<_Range> __e)
>           : _M_base(views::all(std::forward<_Range>(__r))),
>             _M_pattern(views::single(std::move(__e)))
> @@ -3766,7 +3766,7 @@ namespace views::__adaptor
>                            && default_initializable<_Pattern>)
>        = default;
>
> -    constexpr
> +    constexpr explicit
>      split_view(_Vp __base, _Pattern __pattern)
>        : _M_base(std::move(__base)), _M_pattern(std::move(__pattern))
>      { }
> @@ -3774,7 +3774,7 @@ namespace views::__adaptor
>      template<forward_range _Range>
>        requires constructible_from<_Vp, views::all_t<_Range>>
>         && constructible_from<_Pattern, single_view<range_value_t<_Range>>>
> -    constexpr
> +    constexpr explicit
>      split_view(_Range&& __r, range_value_t<_Range> __e)
>        : _M_base(views::all(std::forward<_Range>(__r))),
>         _M_pattern(views::single(std::move(__e)))
> @@ -7295,7 +7295,7 @@ namespace views::__adaptor
>                                && default_initializable<_Pattern>)
>        = default;
>
> -    constexpr
> +    constexpr explicit
>      join_with_view(_Vp __base, _Pattern __pattern)
>      : _M_base(std::move(__base)), _M_pattern(std::move(__pattern))
>      { }
> @@ -7303,7 +7303,7 @@ namespace views::__adaptor
>      template<input_range _Range>
>        requires constructible_from<_Vp, views::all_t<_Range>>
>         && constructible_from<_Pattern, 
> single_view<range_value_t<_InnerRange>>>
> -    constexpr
> +    constexpr explicit
>      join_with_view(_Range&& __r, range_value_t<_InnerRange> __e)
>      : _M_base(views::all(std::forward<_Range>(__r))),
>        _M_pattern(views::single(std::move(__e)))
> --
> 2.50.0
>

Reply via email to