Top*_*ort 1 c++ coroutine c++20 c++-coroutine
此 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;
}
Run Code Online (Sandbox Code Playgroud)
但是在被列为完全支持或 C++20 的协程的 g++10 中,它没有。
(取出experimental并没有帮助。)
我正在编译:g++ -g -std=c++2a -fcoroutines -c main.cpp。
它抱怨没有包含文件生成器,如果我取出#include,该生成器不是 std:: 的一部分或未定义。我想在新标准中它还有另一个名字吗?或者,如果没有,我该怎么做才能获得使用 的协程co_yield?
在没有GCC的状态列表旁边的协同程序的支持说,它支持比其他任何p0912r5,不提供std::generator,实验或以其他方式。
我记得几年前添加<experimental/generator>了VS;我猜海湾合作委员会从未这样做过。
如果它目前被提议包含在 C++ 中,并且您可以找到相关的提议,也许您可以跟踪其支持状态。但老实说,就目前而言,最好编写自己的作品,直到它成为某些实际标准的一部分。
tl;dr:虽然它是一个协程,但这个特性不是协程TS 的一部分。
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |