c++ boost::cobalt main entry points - Posted on Apr 29, 2024 - See https://www.boost.org/libs/cobalt - Logs Home - d0016
c++ boost::cobalt main entry points, co_main or cobalt::run
cobalt::main co_main(int argc, char * argv[]) { std::cout << "Hello boost::cobalt!" << std::endl; co_return 0; }
main can not have coroutines;
The entry called by cobalt::run can have coroutines;
The co_main can have coroutines;
#include <boost/cobalt.hpp> #include <iostream> namespace cobalt = boost::cobalt; class main_class { public: virtual ~main_class() = default; public: cobalt::task<int> start() { co_await this->func(); co_await this->fn(); co_return 0; } public: void speak() { std::cout << "Hello!" << std::endl; } public: cobalt::promise<void> func() { std::cout << "1\n"; co_return; } cobalt::task<void> fn() // cobalt::task is the lazy version of cobalt::promise { std::cout << "2\n"; co_return; } }; int main() // This main is global symbol. { main_class main; // This main is local symbol. main.speak(); // main: call global symbol; ::main: call local symbol; return cobalt::run(main.start()); }
Powered by - B2 Build | boost quickbook | I2Pd
====
cppfxjjm5bgqx2cepvisfcy4zz4ystzxxh36mtuvqm2jp5g6rb7a.b32.i2p