未为 std::string 定义三向比较运算符 (<=>)

问题描述

我正在尝试在我的程序中使用 c++20 的新三向运算符 () 功能,但该运算符似乎没有为字符串定义,因为这个程序

(node:11276) UnhandledPromiseRejectionWarning: Error: Evaluation Failed: TypeError: Cannot read property 'innerHTML' of null
    at __puppeteer_evaluation_script__:2:66
    at ExecutionContext._evaluateInternal (c:\Users\grung\node_modules\puppeteer\lib\cjs\puppeteer\common\ExecutionContext.js:221:19)
    at processticksAndRejections (internal/process/task_queues.js:93:5)
    at async ExecutionContext.evaluate (c:\Users\grung\node_modules\puppeteer\lib\cjs\puppeteer\common\ExecutionContext.js:110:16)
    at async c:\Users\grung\javaScriptPractice\jsPractice\scrapers\amazonScrapers\imageScraper\scraper.js:32:21
(Use `node --trace-warnings ...` to show where the warning was created)
(node:11276) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block,or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection,use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:11276) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future,promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.```

产生这个错误

#include <compare>
#include <string>

using namespace std;

int main()
{

    string a = "a";
    string b = "b";
    auto x = (a <=> b);

    return 0;
}

但是,根据cppreference,这个操作应该在c++20中定义:https://en.cppreference.com/w/cpp/string/basic_string/operator_cmp

三向比较运算符适用于原始类型,因为将前两个变量更改为 int 编译没有问题,另外认实现的三向比较运算符在类中正常工作,但仅当这些类仅包含原始类型时.同样的问题也发生在 std::vector 上,据我所知,它应该支持三向比较运算符。

我正在使用 cmake,据我所知,我已将标准正确设置为 C++ 20

Error   C2676   binary '<=>': 'std::string' does not define this operator or a conversion to a type acceptable to the predefined operator

我正在 Visualstudio 中使用 MSVC 进行编译

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)