gpt4 book ai didi

c++ - cppreference.com 中的示例无法使用 MSVC 进行编译

转载 作者:行者123 更新时间:2023-12-03 08:10:17 25 4
gpt4 key购买 nike

尝试从 cppreference.com 编译以下示例:

#include <coroutine>

struct promise;
struct coroutine : std::coroutine_handle<promise>
{
using promise_type = struct promise;
};

struct promise {
coroutine get_return_object()
{
return { coroutine::from_promise(*this) };
}
std::suspend_always initial_suspend() noexcept { return {}; }
std::suspend_never final_suspend() noexcept { return {}; }
void return_void() {}
void unhandled_exception() {}
};

struct S {
int i;
coroutine f() {
std::cout << i;
co_return;
}
};

但出现编译器错误:

error C3789: this function cannot be a coroutine: 'coroutine::promise' does not declare the member 'get_return_object()'

编译器:MSVC2019,/std:c++latest

适用于 x86 的 Microsoft (R) C/C++ 优化编译器版本 19.29.30137

但是GCC12编译它,MSVC有什么问题?

编辑1

与MSVC2022相同的错误

针对 x86 优化编译器版本 19.30.30709

/std:c++最新

最佳答案

正如网站所说:

正在进行中:此页面正在更新,以反射(reflect) C++20 工作草案中包含的协程技术规范部分。

此示例无法使用 MSVC2019 编译器运行。您可以使用此版本安装并尝试:

https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes

关于c++ - cppreference.com 中的示例无法使用 MSVC 进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71044540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com