【发布时间】:2020-10-15 05:54:47
【问题描述】:
此 MCVE 无法在 g++10 中编译(使用 -std=c++21 -fcoroutines 选项)。
#include <iostream>
int f() { for (int i = 0; i < 10; ++i) co_yield i; }
int main ()
{
for (int i : f())
std::cout << i << ' ';
return 0;
}
f 的第一行应该是什么样子,所以我得到了一个工作协程?还是需要做其他事情来制作一个工作协程?它需要是 C++20 的一部分(g++10 是 supposed to fully support),而不是添加的库。
【问题讨论】:
-
您的
f例程看起来不像这里的例程:en.cppreference.com/w/cpp/language/coroutines ... 这相关吗? (我还不熟悉 C++20 协程。我还在 C++14 领域。) -
f需要返回一个满足协程自定义点的特殊类型。int不是这样的类型。 github.com/lewissbaker/cppcoro 有一些我听说过适用于这类事情的类型。这种特殊用途听起来像generator<int>或类似的东西。 -
感谢您的评论。唉,生成器(这将是完美的!)不是 C++ 标准的一部分。我已经编辑了这个问题,以澄清我想要的是 c++20,而不是在标准可用之前构建的库。
-
@TopologicalSort 你的previous question 已经明确表示C++20 中没有
generator。如果您不打算接受其他库,那么我不知道您在寻找什么。 -
@Barry:他在找你写
generator或类似的东西给他。基本上,他想了解协程机制是如何工作的。
标签: c++ coroutine c++20 c++-coroutine