// // Copyright (c) 2024 Klemens Morgenstern (klemens.morgenstern@gmx.net) // // 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) // #ifndef BOOST_COBALT_EXPERIMENTAL_FRAME_HPP #define BOOST_COBALT_EXPERIMENTAL_FRAME_HPP #include <type_traits> #include <utility> namespace boost::cobalt::experimental { template<typename Impl, typename Promise> struct frame { void (*resume_) (frame *) = +[](frame * ff) { static_cast<Impl*>(ff)->resume();}; void (*destroy_)(frame *) = +[](frame * ff) { static_cast<Impl*>(ff)->destroy();}; typedef Promise promise_type; Promise promise; template<typename ... Args> frame(Args && ... args) : promise(std::forward<Args>(args)...) { } }; } #endif //BOOST_COBALT_EXPERIMENTAL_FRAME_HPP