【问题标题】:Can I use three ways comparison (<=>) using g++?我可以使用 g++ 使用三种方式比较(<=>)吗?
【发布时间】:2020-11-03 12:39:42
【问题描述】:

我想尝试使用三路比较运算符 (&lt;=&gt;) 但是...

代码:

#include <compare>

int main(){
  .
  .
  .
}

命令:

g++ -std=c++2a compare.cpp

输出:

compare.cpp:10:10: fatal error: compare: No such file or directory
   10 | #include <compare>
      |          ^~~~~~~~~
compilation terminated.

我找不到任何解决方案来修复此错误。我正在使用 g++ 9.3.0。

g++ 还不支持&lt;compare&gt; 吗? 如果有,如何使用 g++ 修复此错误? 或者如果没有,请教我另一种使用&lt;compare&gt;的方法,不用g++。

【问题讨论】:

  • 您使用的是什么版本的 GCC?至少试试GCC 10
  • 这里是功能列表及其编译器支持en.cppreference.com/w/cpp/compiler_support - 我建议您查阅它
  • 欢迎来到 StackOverflow!默认情况下,g++ 不一定使用最新版本的标准,因此为旧版本编写的代码会继续以可预测的方式编译。因此,您可能需要传递一个开关以使其使用更高版本,例如 -std=c++20(或 GCC 9 中的 -std=c++2a)。
  • 感谢您的建议。我用过g++ 9.3.0,现在安装试试gcc10。
  • 阅读this

标签: c++ g++ c++20


【解决方案1】:

我可以使用 g++ 使用三种方式比较 () 吗?

是的,这个does work

但请记住,正如评论者所说:

  1. 它必须是足够新的 GCC 版本 - 至少 10.x
  2. 此标头和宇宙飞船运算符&lt;=&gt; 是 C++20 语言标准的一部分。因此,您必须指定-std=c++20(或早期版本中的-std=c++2a)以确保它们可以使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多