https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94682
Bug ID: 94682 Summary: coroutines: Promise param preview should get a reference to *this. Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: iains at gcc dot gnu.org Target Milestone: --- Created attachment 48322 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48322&action=edit fix being tested. Reported independently by MichaĆ Dominiak and Lewis Baker. The static assert fails in the following code, because we should be passing a reference to *this but we're passing this. struct promise; struct future { using promise_type = promise; }; struct promise { template<typename Class> promise(Class &,int) { static_assert(!std::is_pointer<Class>::value, ""); } coro::suspend_never initial_suspend() { return {}; } coro::suspend_never final_suspend() { return {}; } future get_return_object() { return {}; } void return_value(int) {} void unhandled_exception() {} }; struct bar { future foo(int param) { co_return 0; } };