// Copyright (c) 2022 Klemens D. Morgenstern // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include struct foo_aw { bool await_ready(); bool await_suspend(std::coroutine_handle); void await_resume(); }; struct foo { foo_aw operator co_await() const; }; struct my_promise ; struct special_aw { bool await_ready(); bool await_suspend(std::coroutine_handle); void await_resume(); }; static_assert(boost::cobalt::awaitable_type); static_assert(boost::cobalt::awaitable_type); static_assert(!boost::cobalt::awaitable_type); static_assert(boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable); static_assert(!boost::cobalt::awaitable); static_assert(!boost::cobalt::awaitable); static_assert(boost::cobalt::awaitable);