https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100612
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- N.B. in C++20 you can call your member function using a lambda: std::jthread t1{[&obj] (std::stop_token st) { obj.withStopToken(std::move(st)); } }; Or generically, with perfect forwarding: std::jthread t1{[&obj] (auto&&... args) { obj.withStopToken(std::forward<decltype(args)>(args)...); } };