本文中所有代码使用GCC11.1版本g++(几乎完全支持C++20)进行编译,当后续版本GCC完全支持C++20后再更新。
测试代码:
#include <compare>
#include <iostream>
int main()
{
double foo = -0.0;
double bar = 0.0;
auto res = foo <=> bar;
if (res < 0)
std::cout << "-0 小于 0";
else if (res > 0)
std::cout << "-0 大于 0";
else // (res == 0)
std::cout << "-0 与 0 相等";
std::cout << std::endl;
}
编译运行:
补充说明:
由于我的g++11.1安装在“/usr/local/gcc-11.1.0”目录下,vscode找不到标准头文件路径(/usr/local/gcc-10.1.0/include/c++/11.1.0),因此需要在vscode工程中添加c_cpp_properites.json文件来指定此头文件路径。我的配置如下:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"/usr/local/gcc-11.1.0/include/c++/11.1.0"
],
"defines": [],
"compilerPath": "/usr/bin/g++11.1",
"cStandard": "c11",
"cppStandard": "c++20"
}
],
"version": 4
}