| // { dg-do compile { target c++17 } } |
| |
| #include "coro.h" |
| |
| // Test that we get matching types to traits and promise param |
| // preview. |
| |
| // A separate issue from allowing non-class return types. |
| struct Fake {} ; |
| |
| template<typename R, typename CallOp, typename ...T> |
| struct std::coroutine_traits<R, CallOp, T...> { |
| struct promise_type { |
| promise_type (CallOp op, T ...args) {} |
| Fake get_return_object() { return {}; } |
| std::suspend_always initial_suspend() { return {}; } |
| std::suspend_never final_suspend() noexcept { return {}; } |
| void return_void() {} |
| void unhandled_exception() {} |
| }; |
| }; |
| |
| |
| struct Foo |
| { |
| Fake operator() (int a) { |
| co_return; |
| } |
| }; |