On Mon, Oct 13, 2025 at 5:09 PM Patrick Palka <[email protected]> wrote:

>         PR libstdc++/111327
>
> libstdc++-v3/ChangeLog:
>
>         * include/bits/binders.h (_Binder::operator())
>         [_GLIBCXX_EXPLICIT_THIS_PARAMETER]: Also use deducing this in
>         C++20 mode when possible.
>         * testsuite/20_util/function_objects/bind_front/111327.cc:
>         Expect error inside header even in C++20 mode.
> ---
>
Similar comments on the tests, but LGTM.

>  libstdc++-v3/include/bits/binders.h                          | 5 ++++-
>  .../testsuite/20_util/function_objects/bind_front/111327.cc  | 2 +-
>  2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/libstdc++-v3/include/bits/binders.h
> b/libstdc++-v3/include/bits/binders.h
> index 6489edd5321b..972471745bd4 100644
> --- a/libstdc++-v3/include/bits/binders.h
> +++ b/libstdc++-v3/include/bits/binders.h
> @@ -125,7 +125,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>
> _M_bound_args(__make_bound_args<_BoundArgs...>(std::forward<_Args>(__args)...))
>         { static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
>
> -#if __cpp_explicit_this_parameter
> +#if _GLIBCXX_EXPLICIT_THIS_PARAMETER
> +# pragma GCC diagnostic push
> +# pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
>        template<typename _Self, typename... _CallArgs>
>         constexpr _Result_t<_Self, _CallArgs...>
>         operator()(this _Self&& __self, _CallArgs&&... __call_args)
> @@ -134,6 +136,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>           return _S_call(__like_t<_Self, _Binder>(__self),
>                          std::forward<_CallArgs>(__call_args)...);
>         }
> +# pragma GCC diagnostic pop
>  #else
>        template<typename... _CallArgs>
>         requires true
> diff --git
> a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
> b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
> index 58832a61a7eb..931886b7b54d 100644
> --- a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
> +++ b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
> @@ -50,4 +50,4 @@ int main() {
>    std::move(std::as_const(g2))();
>  }
>
> -// { dg-error "no type named 'type' in 'std::__conditional_t<false,
> std::invoke_result<" "" { target c++23 } 0 }
> +// { dg-error "no type named 'type' in 'std::__conditional_t<false,
> std::invoke_result<" "" { target *-*-* } 0}
> --
> 2.51.0.491.g4b71b29477
>
>

Reply via email to