Ant*_*ton 6 c++ gcc c++20 c++-coroutine gcc10
我已经在 ubuntu 20.04 上安装了 gcc-10 编译器。我需要测试协程ts的工作,所以我找到了一个使用协程的例子并尝试编译它。
例子:
#include <coroutine>
#include <iostream>
struct simple {
static inline int x = 0;
int id = 0;
simple() : id{ x++ } { std::cout << id << " constructed\n"; }
simple(simple&&) : id{ x++ } { std::cout << id << " move constructed\n"; }
~simple() { std::cout << id << " destructed\n"; }
struct promise_type {
simple get_return_object() { return {}; }
void return_void() {}
void unhandled_exception() { std::terminate(); }
auto initial_suspend() noexcept { return std::suspend_never{}; }
auto final_suspend() noexcept { return std::suspend_never{}; }
};
};
simple f() { co_return; }
int main() {
f();
}
Run Code Online (Sandbox Code Playgroud)
即使我在 clion 中将 gcc-10 设为默认编译器,添加了 required 标志并在 cmake 中包含了标准 20,编译器仍然会抛出错误。co_return 关键字错误
Std::experimental::coroutine_traits type was not found; include <experimental/coroutine> before defining a coroutine
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为包含的标题没有空格,而且还可以使用它的功能。
制作:
cmake_minimum_required(VERSION 3.17)
project(test6)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines")
add_executable(test6 main.cpp)
Run Code Online (Sandbox Code Playgroud)
如何解决这个差距?
我使用g++ version 10.2.0和
Package: libstdc++-10-dev-mips64r6-cross
Architecture: all
Version: 10.2.0-5ubuntu1~20.04cross1
Run Code Online (Sandbox Code Playgroud)