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