29得票3回答
三元比较运算符是否总是高效的?

在他的“宇宙飞船”运算符提案中(第2.2.2节,第12页底部),Herb Sutter说: 基于 <=> 和其返回类型:这种模型具有重大优势,与之前对C++和其他语言的建议相比,一些独特之处: [...] (6)效率,包括最终实现零开销抽象比较:绝大多数比较总是单通道的。唯一的例...

25得票1回答
为什么我们需要在C++中使用太空船运算符?

为什么我们在C++中需要这样一个运算符,它在现代C++编程中有什么用处?如果有任何真实世界的代码示例可以应用它,将会很有帮助。 这个问题旨在理解在实际世界中的实际应用。

24得票2回答
std::strong_ordering和std::weak_ordering的实际含义是什么?(这是一个提问标题,不需要回答)

我最近在阅读关于C++20的consistent comparison (即 operator<=>) 的一些内容,但是无法理解std::strong_ordering和std::weak_ordering之间的实际区别(对于这个问题的_equality版本也是如此)。 除了非常描...

22得票1回答
三路比较和constexpr函数模板:哪个编译器是正确的?

请考虑: #include <compare> template<class=void> constexpr int f() { return 1; } unsigned int x; using T = decltype(x <=> f()); ...

21得票1回答
是否有适用于太空船运算符的std::less/std::greater函数?(提问关于IT技术)

所有基本比较操作符 (<, <=, ==, !=, >=, >) 都有关联的函数对象 (std::less, std::less_equal, std::equal_to, std::not_equal_to, std::greater_equal, std::grea...

20得票1回答
为optional<T>实现operator<=>。

随着operator&lt;=&gt;被加入到C++20中,我想尝试思考如何实现这个运算符,对于那些不是简单的成员比较的情况。 如果要比较optional&lt;T&gt;和optional&lt;U&gt;或U,我们应该如何实现太空船运算符呢?这种情况下,我们要么比较T和U,要么比较底层状...

18得票3回答
三路比较运算符与不一致排序推断

不久前,我定义了我的第一个三路比较运算符。它比较单个类型并替换了多个传统运算符。这是一个很棒的特性。然后,我尝试通过委托实现一个类似的比较两个变体的运算符:auto operator &lt;=&gt; (const QVariant&amp; l, const QVariant&amp; r...

17得票1回答
C++20之前代码中“<=>”的合法用法

在 wandbox 上玩耍时,我发现如果在 C++17 或更早的版本中出现 &lt;=&gt;,clang 实际上会发出警告。{{}} warning: '&lt;=&gt;' is a single token in C++2a; add a space to avoid a change...

16得票1回答
为什么C++ 20标准库容器中移除了比较运算符?

我在浏览 cppreference 网站时发现,C++20版本中移除了 vector 的比较操作符,并引入了宇宙飞船操作符(&lt;=&gt;)。同样的情况也出现在许多其他标准库容器中,例如set 和 map。 在新标准下如何进行比较操作?此外,C++20是否会对旧代码产生错误?

16得票4回答
为什么在Ruby中sort或太空船(飞碟)运算符(<=>)不能用于布尔值?

在"Is it possible to sort a list of objects depending on if the individual object's response to a method?"这篇文章中,我发现飞碟在布尔值上无法正常工作。 考虑以下内容: Ruby 1.8...