template struct myfuture: std::future { myfuture(std::future && a):std::future(std::move(a)) { std::cout<<"myfuture"< requires(!std::is_void_v && !std::is_reference_v) struct std::coroutine_traits, Args...> { struct promise_type:std::promise { std::suspend_never initial_suspend() const noexcept { std::cout<<"initial_suspend"<set_exception(std::current_exception()); } myfuture get_return_object() noexcept { std::cout<<"get_return_object"<get_future(); } void return_value(const T &value) noexcept(std::is_nothrow_copy_constructible_v) { std::cout<<"return_value"<set_value(value); } void return_value(T &&value) noexcept(std::is_nothrow_move_constructible_v) { this->set_value(std::move(value)); } }; }; myfuture co_fun(float a, float b) { std::cout << "============co_fun"<