1 // { dg-do compile } 2 // Test we create co_await_expr with dependent type rather than type of awaitable class 3 4 #include "../coro.h" 5 #include "../coro1-ret-int-yield-int.h" 6 #include <chrono> 7 8 struct TestAwaiter { 9 int recent_test; TestAwaiterTestAwaiter10 TestAwaiter(int test) : recent_test{test} {} await_readyTestAwaiter11 bool await_ready() { return true; } await_suspendTestAwaiter12 void await_suspend(coro::coroutine_handle<>) {} await_resumeTestAwaiter13 int await_resume() { return recent_test;} return_valueTestAwaiter14 void return_value(int x) { recent_test = x;} 15 }; 16 17 template <typename Rep, typename Period> test_temparg(std::chrono::duration<Rep,Period> dur)18coro1 test_temparg (std::chrono::duration<Rep, Period> dur) 19 { 20 auto sum = co_await TestAwaiter(1); 21 if (!sum) 22 dur.count(); 23 co_return 0; 24 } 25