On Fri, 1 Oct 2021 at 21:26, Ville Voutilainen wrote:
>
> On Fri, 1 Oct 2021 at 23:19, Jonathan Wakely via Libstdc++
> <libstd...@gcc.gnu.org> wrote:
> >
> > This adds a non-standard extension to support initializing a
> > std::jthread with a pointer to a member function that expects a
> > stop_token to be added to the arguments. That use case is not supported
> > by C++20, because the stop_token would get added as the first argument,
> > which is where the object argument needs to be to invoke a pointer to
> > member function.
>
> Yeah, and the use-case is supported by applying a wrapper that does
> the right kind of argument binding, like
> shown in the BZ. Why are we doing this?

The lambda workaround is not as convenient as having it Just Work. so
it seemed like a useful extension to try, with no downside. It doesn't
even change the is_constructible<thread, ...> result , because the
std::thread constructor isn't constrained, so is_constructible<thread,
...> is true for nearly all arg types anyway. The only
"non-conformance" is that we don't diagnose the
is_invocable_v<decay_t<F>, decay_t<Args>...> requirement if F is a
pointer-to-member-function.

Maybe I should have sent it as an RFC, or just left it in my fork not
pushed to trunk. If a proposal comes before the committee and gets
rejected then we can remove it again.

Reply via email to