Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;20违约平等/不平等_C++_C++20 - Fatal编程技术网

C++ C++;20违约平等/不平等

C++ C++;20违约平等/不平等,c++,c++20,C++,C++20,C++20为我们提供了spaceship操作符,甚至允许我们default它,生成所有与默认语义的比较,这将从我们的代码库中删除很多样板文件,太棒了 但平等和不平等又如何呢?C++20是否也为我们提供了一种实现平等和不平等的方法?根据,默认的宇宙飞船只会给我们=,而不是=和=。考虑到我通常更需要平等/不平等的方式,而不是大/小,这似乎是非常不幸的。那么,有没有一种方法可以同时(或仅)生成默认的==和=在C++20中 更新:页面现在包含默认运算符==的说明。似乎在添加文档之前的两个小时我访问了该页

C++20为我们提供了spaceship操作符,甚至允许我们
default
它,生成所有与默认语义的比较,这将从我们的代码库中删除很多样板文件,太棒了

但平等和不平等又如何呢?C++20是否也为我们提供了一种实现平等和不平等的方法?根据,默认的宇宙飞船只会给我们
=
,而不是
=
=。考虑到我通常更需要平等/不平等的方式,而不是大/小,这似乎是非常不幸的。那么,有没有一种方法可以同时(或仅)生成默认的
==
=在C++20中

更新:页面现在包含默认
运算符==
的说明。似乎在添加文档之前的两个小时我访问了该页面:D

C++20是否也为我们提供了一种默认相等和不相等的方法

是的(但见最后一段)。语法相同:

friend bool operator==(const T&, const T&) = default;
friend bool operator!=(const T&, const T&) = default; // not needed if == exists
有序不等式也可以默认为:

friend bool operator<=(const T&, const T&) = default;
// ...

friend bool Operator我想答案是page说:“这部分不完整,原因是:默认的相等比较”。你不需要第二行。@NathanOliver,不管怎样,这是允许的。我不确定这是否正确。它不是必须是一个成员
操作符==
才能被默认吗?@idclev463035818@gexicide Defaulting==今天似乎已经被添加到cppreference中,一个“根据任何运算符重载的规则,默认重载也将允许将类型与=”进行比较。如果运算符为默认值,而运算符==完全未定义,则运算符==也被视为默认值。”