@cosmicAC fixed&thx
顶
@andyli 协程还是算了吧。
刚才我详细了解了一下C++20的所谓"协程",只是定义了co_yield
、co_return
、co_await
三个关键字,实际上是三个(需要你手动重载的)运算符,重载的过程中还必须手动指定各种情况(比如generator如何返回值、如何跳到下一项、如何挂起,如何恢复)该如何处理。可以参考这篇文章找到具体的处理方法。代码量巨大,只是一个最最基础的演示就需要300行10K的代码。放到日报里是不现实的。
还有,如果使用std::future
接入协程,代码会简短很多(相当于已经站在巨人的肩膀上了)。然而这件事只有MSVC支持,g++和clang++都不支持。所以应用场景极其有限,我不仅本地无法运行,也找不到在线的测试环境,也没办法写。
如果真的特别需要这项功能的话,可以试着了解一下C的setjmp
和longjmp
函数,以及boost::coroutines
,都比C++20的协程好用很多。
Undefined Behavior
后排茈兹
UB 都人尽皆知了日报才出现