Questions tagged «c++-coroutine»

1
UB是否可以恢复其生存期已结束的对象的成员函数协程?
这个问题源于以下评论:C ++ 20协程的Lambda生命周期说明 关于这个例子: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } 所以问题是执行返回的协程是否foo会导致UB。 “调用”成员函数(在对象的生存期结束之后)是UB:http : //eel.is/c++draft/basic.life#6.2 ...可以使用任何表示对象将要或曾经位于的存储位置的地址的指针,但只能以有限的方式使用。[...]该程序在以下情况下具有未定义的行为: [...] -指针用于访问对象的非静态数据成员或调用该对象的非静态成员函数,或者 但是,在此示例中: ()Lambda的生存期仍然有效时,将调用Lambda 的运算符 然后将其挂起, 然后lambda被破坏, 然后成员函数(operator ())随后恢复。 是否将此恢复视为未定义的行为?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.