g++10 中的 C++20:未定义生成器

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

Ast*_*ngs 5

在没有GCC的状态列表旁边的协同程序的支持说,它支持比其他任何p0912r5,不提供std::generator,实验或以其他方式。

我记得几年前添加<experimental/generator>了VS;我猜海湾合作委员会从未这样做过。

如果它目前被提议包含在 C++ 中,并且您可以找到相关的提议,也许您可​​以跟踪其支持状态。但老实说,就目前而言,最好编写自己的作品,直到它成为某些实际标准的一部分。

tl;dr:虽然它一个协程,但这个特性不是协程TS 的一部分