| 25 | } |
| 26 | |
| 27 | task<> run() { |
| 28 | // var : std::variant<std::monostate, int, const char *>; |
| 29 | auto [idx, var] = co_await any(f0(), f1(), f2()); |
| 30 | std::cout << "get the result of f" << idx << ": "; |
| 31 | std::visit( |
| 32 | overload{ |
| 33 | [](std::monostate) { std::cout << "(void)\n"; }, |
| 34 | [](int x) { std::cout << x << " : int\n"; }, |
| 35 | [](const std::string &s) { std::cout << s << " : string\n"; }, |
| 36 | }, |
| 37 | var |
| 38 | ); |
| 39 | |
| 40 | { |
| 41 | std::cout << "\n===============\n\n"; |
| 42 | std::cout << "3 * f2 start!\n"; |
| 43 | uint32_t idx = co_await any<unsafe>(f2(), f2(), f2()); |
| 44 | std::cout << "get the result of f" << idx << ".\n"; |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | int main() { |
| 49 | io_context ctx; |