reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 -fcoroutines-ts -fsyntax-only -Wall -Wextra -Wuninitialized -fblocks #include "Inputs/std-coroutine.h" using namespace std::experimental; struct A { bool await_ready() { return true; } int await_resume() { return 42; } template <typename F> void await_suspend(F) {} }; struct coro_t { struct promise_type { coro_t get_return_object() { return {}; } suspend_never initial_suspend() { return {}; } suspend_never final_suspend() { return {}; } A yield_value(int) { return {}; } void return_void() {} static void unhandled_exception() {} }; }; coro_t f(int n) { if (n == 0) co_return; co_yield 42; int x = co_await A{}; } template <class Await> coro_t g(int n) { if (n == 0) co_return; co_yield 42; int x = co_await Await{}; } int main() { f(0); g<A>(0); } |