| // { dg-do run } |
| |
| #include "../coro.h" |
| |
| struct promise; |
| |
| struct future |
| { |
| using promise_type = promise; |
| }; |
| |
| struct promise |
| { |
| template<typename... Args> |
| promise (Args&... args) {} |
| |
| coro::suspend_never initial_suspend() { return {}; } |
| coro::suspend_never final_suspend() noexcept { return {}; } |
| |
| future get_return_object() { return {}; } |
| |
| void return_value(int) {} |
| void unhandled_exception() {} |
| }; |
| |
| struct pair |
| { |
| int i; |
| }; |
| |
| pair |
| something () |
| { |
| return { 1 }; |
| } |
| |
| future |
| my_coro () |
| { |
| auto ret = something (); |
| |
| if (ret.i != 1) |
| abort (); |
| |
| auto [ i ] = something (); |
| if (i != 1) |
| abort (); |
| |
| co_return 1; |
| } |
| |
| int main () |
| { |
| my_coro (); |
| } |