c++ - 为什么协程不允许使用占位符返回类型?
解决方案
用于特定协程的协程机制主要基于函数的返回类型。返回类型是协程 Future,协程逻辑会从中推导出协程 promise 对象,该对象将用于将协程生成的实际值通过返回的 Future 传递给调用者。
这意味着co_await
,co_yield
和co_return
,它们都没有真正使用协程的返回类型(顺便说一句,这就是为什么co_return
拼写不同的原因return
;它具有不同的含义和行为,因此它得到了不同的关键字)。co_return
并且co_yield
没有给出未来类型本身;他们被赋予了一种承诺/未来可以编组给用户的类型。
并且co_await
表达式的类型与协程的承诺/未来几乎没有关系。它只是一个值,协程可以通过它来安排其恢复,并且可以从中提取某种任意类型的值。预定的恢复并不真正关心当前协程的特定未来/承诺。即使您的协程的未来/承诺类型不是任何类型,您也可以co_await
使用。std::future<T>
std::future
所以没有办法从提供给这些关键字的表达式中推断出协程的未来/承诺应该是什么。因此,您必须明确指定它。
推荐阅读
- javascript - 使用 JavaScript 和 CSS 创建弹出菜单窗口
- machine-learning - 如何在 sci-kit 中拟合具有多个特征的多项朴素贝叶斯分类器?
- python - 为什么 Selenium 和 geckodriver 在使用气流测试运行时可以工作,但在 DAG 运行中运行时会引发错误?
- powershell - 跨不同服务器的多个用户的 Get-ADUser
- r - 使用具有 3 列数据的 R 创建热图
- url - 添加到 Wix 的购物车网址与 WooCommerce 相似吗?
- java - 我想不出这个盒子阵列挑战
- javascript - 轮播在最新的 Bootstrap 版本中不起作用
- python - Python Mlens Ensemble:KeyError:“[Int64Index([... dtype='int64', length=105)] 均不在 [columns] 中”
- google-sheets - 如何将此工作表重新格式化为更加表格?