gpt4 book ai didi

c++ - std::strong_ordering 和 std::weak_ordering 的实际意义

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:17 25 4
gpt4 key购买 nike

我一直在阅读一些关于 C++20 的 consistent comparison (即 operator<=> )但无法理解 std::strong_ordering 之间的实际区别是什么和 std::weak_ordering (对于这种方式的 _equality 版本也是如此)。
除了对类型的可替代性进行非常详细的描述之外,它是否真的会影响生成的代码?它是否对如何使用该类型添加了任何限制?
很想看到一个真实的例子来证明这一点。

最佳答案

Does it add any constraints for how one could use the type?

一个非常重要的约束(原始论文并非有意)是 P0732 采用 strong_ordering 的重要性作为类类型可以用作非类型模板参数。 weak_ordering 对于这种情况是不够的,因为模板等价必须如何工作。 情况不再如此,因为非类型模板参数不再以这种方式工作(参见 P1907R0问题的解释和 P1907R1 用于新规则的措辞)。

一般来说,有些算法可能只需要 weak_ordering 而其他算法需要 strong_ordering,所以能够在类型上注释可能意味着编译错误(不够强提供的顺序)而不是简单地在运行时未能满足算法的要求,因此只是未定义的行为。但是标准库中的所有算法和我所知道的范围 TS 都只需要 weak_ordering。我不知道有什么需要 strong_ordering 的。

Does it actually affect the generated code?

除了需要 strong_ordering 的情况,或者算法根据比较类别明确选择不同的行为之外,否。

关于c++ - std::strong_ordering 和 std::weak_ordering 的实际意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51160471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com