【发布时间】:2017-08-05 16:59:24
【问题描述】:
使用从 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4628.pdf 定义并在 VS2015/Update 3 中实现的协程,生成器如何调用代表它发出值的函数?
说明性示例
我想写如下代码...
static void yield_for_me()
{
co_yield 27; // does not compile
// co_yield relies on hidden definitions
}
std::experimental::generator<int> testf()
{
yield_for_me();
co_yield 28;
}
...希望它的结果与以下代码完全相同:
std::experimental::generator<int> testf()
{
co_yield 27;
co_yield 28;
}
【问题讨论】:
-
对此的自然跟进是“co_yield 关键字在后台生成的等效 c++ 代码是什么”? - 了解底层的脚手架会很有帮助。
-
并不是说它有帮助:鉴于链接的规范,我似乎没有看到一种方法——python中的等价物是
yield from——希望它们在c++中实现类似的东西:)