c++ - 未为 std::string 定义三向比较运算符 (<=>)
问题描述
我试图在我的程序中使用 c++20 的新三向运算符(<=>)功能,但似乎这个运算符不是为字符串定义的,因为这个程序
#include <compare>
#include <string>
using namespace std;
int main()
{
string a = "a";
string b = "b";
auto x = (a <=> b);
return 0;
}
产生此错误:
Error C2676 binary '<=>': 'std::string' does not define this operator or a conversion to a type acceptable to the predefined operator
但是根据cppreference,这个操作应该是在c++20中定义的:https ://en.cppreference.com/w/cpp/string/basic_string/operator_cmp
三向比较运算符适用于原始类型,因为将前两个变量更改为 int 编译没有问题,另外默认实现的三向比较运算符与类正确工作,但仅当这些类仅包含原始类型时。std::vector 也发生了同样的问题,据我所知,它应该支持三向比较运算符。
我正在使用 cmake,据我所知,我已将标准正确设置为 C++ 20
cmake_minimum_required (VERSION 3.8)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
我在visualstudio中使用MSVC编译
解决方案
推荐阅读
- c - 调用 rename() 而不覆盖意外数据且不覆盖意外数据
- angularjs - 如何在 AngularJS Material 表单字段中向 $validators 添加函数?
- symfony - Symfony 4 fetch response.text() 是分析器工具栏的 HTML 而不是 json
- excel - 有没有更好的方法来循环仅通过列的可见单元格并将当前单元格与下一个单元格以及之后的单元格两个进行比较?
- react-native - 在 Input 中使用 react-number-format
- c# - Newtonsoft.Json 反序列化集合
- javascript - 使用离子/角度向表单动态添加多个输入字段
- python - 如何在 python 中快速求和大型 numpy 数组?
- python-3.x - Flask 重定向功能重定向到原始 API Gateway url 而不是自定义域
- latex - 使用 tikzpicture 和 qtree 在树中创建交叉分支