【发布时间】:2021-03-25 13:05:52
【问题描述】:
此 MCVE 在 Visual Studio 中运行良好。
#include <experimental/generator>
#include <iostream>
std::experimental::generator<int> f() { for (int i = 0; i < 10; ++i) co_yield i; }
int main ()
{
for (int i : f())
std::cout << i << ' ';
return 0;
}
但在被列为完全支持或 C++20 协程的 g++10 中,它没有。
(取出experimental 没有帮助。)
我正在编译:g++ -g -std=c++2a -fcoroutines -c main.cpp.
它抱怨没有包含文件生成器,如果我取出 #include,则该生成器不是 std:: 的一部分或未定义。我想在新标准中有另一个名字吗?或者如果没有,我该怎么做才能获得使用co_yield 的协程?
【问题讨论】:
-
experimental部分在<experimental/generator>和std::experimental::generator表示它不是标准的一部分。因此,并非所有编译器都可以在其标准库中实现它。
标签: c++ coroutine c++20 c++-coroutine