8得票1回答
clang-11通过-fcoroutines标志调用<coroutine>头文件吗?

我正在尝试使用以下命令编译一个使用 coroutine 库的 .cpp 文件。 clang-11 -std=c++20 -stdlib=libstdc++ main.cpp 我得到了这样的错误: /usr/lib/gcc/x86_64-linux-gnu/10/../../../.....

8得票1回答
如何在C++ 20中实现链式协程

我正在尝试链接协程。Foo2 实际上将变成异步操作。一旦 Foo2 恢复,代码应该按照“恢复 Foo2”和“恢复 Foo1”的顺序执行(就像 2 个 continuation)。有些细节我不太清楚。首先,当 co_await b 暂停时,它是否立即向调用者返回 promise 对象?然后发生 ...

20得票1回答
通过C++20协程生成Python生成器

假设我有以下这段Python代码: def double_inputs(): while True: x = yield yield x * 2 gen = double_inputs() next(gen) print(gen.send(1)) ...

11得票1回答
在 Boost Asio 协程中, co_await 自定义等待器。

我目前正在尝试使用新的C++20协程与boost::asio。但是,我正在努力找出如何实现自定义等待函数(例如boost::asio::read_async)。我想要解决的问题是: 我有一个连接对象,可以发出多个请求并为响应注册回调。不能保证按照请求的顺序到达响应。我尝试将回调包装成自定义的...

7得票1回答
在使用 co_await 时,对于不可复制和不可移动的类型出现了意外的 memcpy。

序言 这是我在代码中尝试做的事情的描述,请跳到下一节查看实际问题。 我想在嵌入式系统中使用协程,但不能承受太多的动态分配。因此,我尝试以下方法:为各种外设查询创建不可复制、不可移动的可等待类型。在查询外设时,我使用类似 auto result = co_await Awaitable{pa...

7得票1回答
“协程的承诺必须声明'return_value'或'return_void'”错误 Visual Studio 2019 C++ 20

VS2019最新的C++编译器。 错误信息是:"协程的承诺必须声明'return_value'或者'return_void'" 这个例子摘自David Mazières的博客https://www.scs.stanford.edu/~dm/blog/c++-coroutines.html,...

10得票4回答
C++ 协程 - 何时以及如何使用?

作为一个对协程概念非常新的 C++ 初学者,我正在尝试学习和使用该特性。虽然这里有协程的解释:什么是协程?。 但我还不确定何时以及如何使用协程。虽然提供了几个示例用例,但这些用例有替代方案,可以通过 C++20 之前的特性来实现:(例如:无限序列的惰性计算可以通过具有私有内部状态变量的类来完...

13得票2回答
C++20协程中Lambda的生命周期解释

Folly拥有一个可用的C++20风格协程库。 在Readme中,它声称: 重要提示:您需要非常小心临时lambda对象的生命周期。调用lambda协程会返回一个捕获对lambda的引用的folly::coro::Task,因此,如果未立即对返回的Task进行co_await,则当临时l...

8得票1回答
同时使用cppcoro和ASIO的co_spawn

我有一个使用 cppcoro 写的库,希望在ASIO中使用它。但每当我尝试从该库co_spawn一个协程时,Boost都会抱怨可等待类型不正确。 例如: #include &lt;asio/io_context.hpp&gt; #include &lt;asio/coroutine.hpp...

7得票2回答
C++查找co_await可等待结果类型。

我想知道是否可以找到可等待对象 co_await 的结果类型: 由于无法在未评估的上下文中使用 co_await,因此我无法进行。 template&lt;class Awaitable&gt; task&lt;&gt; f(Awaitable&amp;&amp; awaitable) { ...