https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100612
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- I don't think this is valid. The requirement for the constructor is is_invocable_v<decay_t<F>, stop_token, decay_t<Args>...> which means the stop_token is passed to INVOKE before the object, so it calls INVOKE(f, token, &obj) which isn't valid.