C++ 从协同程序中产生值时出错;错误:成员引用基类型';无效';不是一个结构或联合体”;

C++ 从协同程序中产生值时出错;错误:成员引用基类型';无效';不是一个结构或联合体”;,c++,coroutine,C++,Coroutine,我试图使用实验性的协程原语进行一个简单的构造,但是当我试图产生一个值时,我得到了一个错误 ../main.cpp:6:5: error: member reference base type 'void' is not a structure or union co_yield "Hello"; #包括 #包括 模板 类序列{ 公众: 静态断言(std::is_default_constructible_v); 静态断言(std::is_copy_constructible_v | |

我试图使用实验性的协程原语进行一个简单的构造,但是当我试图产生一个值时,我得到了一个错误

../main.cpp:6:5: error: member reference base type 'void' is not a structure or union
    co_yield "Hello";
#包括
#包括
模板
类序列{
公众:
静态断言(std::is_default_constructible_v);
静态断言(std::is_copy_constructible_v | | std::is_move_constructible_v);
结构承诺类型{
使用coro_handle=std::experimental::coroutine_handle;
自动获取\返回\对象(){
返回coro_handle::from_promise(*this);
}
constexpr自动初始值_suspend(){
返回std::experimental::suspend_always{};
}
constexpr自动最终_挂起(){
返回std::experimental::suspend_always{};
}
自动屈服值(T&&U值){
这个->值=值;
}
自动返回_值(T&&value){
这个->值=值;
}
自动未处理的_异常(){
exceptionPtr=std::current_exception();//NOLINT(缺少容易出错的抛出关键字)
}
std::可选值;
std::exception_ptr exception ptr;
};
使用coro_handle=std::experimental::coroutine_handle;
序列(coro_handle handle):handle{handle}{assert(handle);}//NOLINT(google显式构造函数)
序列(常量序列&)=删除;
Sequence(Sequence&&)noexcept=默认值;
T运算符()(){
handle.resume();
返回get();
}
bool resume(){
返回句柄。resume();
}
不明白{
auto&promise=handle.promise();
如果(承诺.例外PTR)
std::重新提交例外(promise.exceptionPtr);
返回std::move(promise.value.value());
}
私人:
coro_手柄;
};
#包括
#包括
序列foo(){
“你好”;
返回“世界”;
}
int main(){
自动c=foo();

std::在我的例子中,gcc-10和clang-9的错误消息是相同的,在我的例子中,gcc-10和clang-9的错误消息也是相同的