12得票3回答
在协程状态中放置奇异对齐对象是否是已定义的行为?

编辑:感谢大家的回答和回复。 Language Lawyer的答案在技术上是正确的,因此被接受,但Human-Compiler的答案是唯一符合赏金标准(获得2个或以上的点)或对问题的特定主题进行了足够详细阐述的答案。 完整问题 如果将对象 b 放置在协程状态中(例如将其作为参数, 或在挂起点...

12得票1回答
view::join需要可复制的内部范围吗?为什么?

假设我们有一个名为的标签。 cppcoro::generator<int> gen_impl(int in) { const auto upper = in + 10; for (; in < upper; ++in) co_yield in; } cpp...

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

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

10得票1回答
在C++20协程中,我们能否使用alloca()或可变长度数组扩展?

GCC C++编译器(以及许多其他C++编译器)提供非标准扩展,例如 alloca() 用于基于栈的分配 变长数组,因为它们是C标准的一部分 从根本上讲,这些扩展能否在C++20协程中使用?是否可能实现?如果可以,那么如何实现? 据我所了解,C++20协程通常在第一次调用时(即创建prom...

10得票1回答
在使用 co_yield 进行移动时,是否需要使用 std::move?

假设我在循环体中声明了一个`std::vector`并使用`co_yield`返回: some_generator<std::vector<int>> vector_sequence() { while (condition()) { std:...

10得票1回答
将局部协程变量的指针co_yield出去是否安全?

众所周知,返回指向堆栈变量的指针通常是不明智的:int* foo() { int i = 0; return &i; } int main() { int* p = foo(); } 以上示例中,我的理解是int被销毁了,因此p成为了悬空指针。 我想知道这是否也适用于C+...

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

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

9得票1回答
当对象生命周期已结束时,恢复成员函数协程是否会导致未定义行为?

这个问题源自于这个评论:Lambda lifetime explanation for C++20 coroutines 关于这个示例: auto foo() -> folly::coro::Task<int> { auto task = []() -> f...

9得票1回答
C++ 协程中能否包含普通的 `return` 语句?

我正在使用C++/WinRT为一个UWP控件编写C++协程: winrt::fire_and_forget MyControl::DoSomething() { if (/* some condition */) { // Why does this wor...

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

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