cost 377 ms
为枚举 class 覆盖 c++20 飞船运算符 - overwrite c++20 spaceship operator for enum class

我正在努力为枚举 class 提供新的宇宙飞船操作员。让我们举以下例子: 但很明显我在这里弄错了,因为我的main()仍然告诉我,蚂蚁比老虎大。 如您所见,我试图显式删除默认的比较运算符,以强制编译器使用我的自定义太空船一号,但没有成功。 当我显式调用auto result = Animals::A ...

c++20默认比较运算符和空基class - c++20 default comparison operator and empty base class

c++20默认比较运算符是一个非常方便的功能。 但是我发现如果 class 有一个空的基础 class,它的用处就会减少。 默认操作符<=>通过依次比较基数(从左到右深度优先)和非静态成员(按声明顺序)T的子对象来计算<=>,递归扩展数组成员(在增加下标的顺序),并在发现 ...

添加不相关的运算符 == 渲染器 spaceship operator(&lt;=&gt;) 不起作用 - Adding unrelated operator == renderers spaceship operator(<=>) non-functional

在此代码示例中,似乎添加不相关的 operator== (在不同的类型上)会使 saceship opreator 不起作用。 这是在 VS2019 中测试的。 它是编译器错误还是一些奇怪的行为? 我得到的错误是 B 类中运算符的使用是: 二进制“==”:未找到采用“const B”类型的左侧 ...

如何使用三路比较(spaceship op)实现不同类型之间的operator==? - How to use three-way comparison (spaceship op) to implement operator== between different types?

简单任务:我有这两种类型 我想使用这个新的 C++20 宇宙飞船操作,每个人都说它很酷,能够编写type_a{} == type_b{} 。 我没能做到。 即使我在它们之间写了operator&lt;=&gt; ,我也只能调用type_a{} &lt;=&gt; type_b{} ,但绝不是简单的 ...

当父 class 没有为自己定义宇宙飞船运算符时覆盖宇宙飞船运算符 - Overriding spaceship operator when parent class does not define spaceship operator for itself

编译器对以下代码的处理方式不同: GCC 和 MSVC 都接受它,但 Clang 不接受它返回错误: 演示: https://gcc.godbolt.org/z/WGrGTe89z 似乎 Clang 是这里唯一的一个,因为I::operator &lt;=&gt;(const I&amp;) co ...

是否可以在 c++20 中使用比较运算符在枚举值之间建立小于大于顺序的关系 - Is it possible to make a less-than greater-than ordering relationship between enum values using comparison operator in c++20

如果我们有一个这样的枚举类 enum class alpha{ a, b, c, d}; 是否可以实现一个运算符,在字母表中的字母之间建立排序关系,使得 enum class alpha{ a, b, c, d}; constexpr auto operator &lt;=&gt; (al ...

递归宇宙飞船算子 - Recursive spaceship operator

我写了这个简单的代码,但它没有编译,因为比较被隐式删除了。 任何人都可以向我解释如何解决这个问题,或者至少为什么它不起作用? 编辑:使用“g++ -std=gnu++2a main.cpp”编译 Edit2:这是 output 的错误部分(后面有很多很多行候选): ...

使用 C++20 三向比较进行更静默的行为变化 - More silent behaviour changes with C++20 three-way comparison

令我惊讶的是,我遇到了另一个障碍,比如C++20 行为用相等运算符破坏现有代码? . 考虑一个简单的不区分大小写的键类型,与例如std::set或std::map : 简单测试: 使用 C++17,两个断言都通过(编译器资源管理器)。 切换到 C++20,第二个断言失败(编译器资源管理器) ou ...

为什么 C++20 中的空结构没有隐式宇宙飞船运算符? - Why do empty structs in C++20 do not have implicit spaceship operator?

动机:有时我使用 std::variant 来实现“花式”枚举,其中一些枚举状态可以携带 state。 现在,如果我想将&lt;=&gt;用于我的变体,它要求我的空结构已定义 &lt;=&gt;。 这对我来说似乎有点奇怪,因为如果类型有 0 位 state 则该类型的所有实例都是相同的。 完整示例 ...

为什么 spaceship 允许混合比较(不同的模板实例化)与无意义的结果? - Why does spaceship allow mixed comparisons (different template instantiations) with nonsense results?

编辑:这与宇宙飞船无关。 只是使用 spaceship 混淆了我的代码中的真正问题(有关详细信息,请参阅答案)。 我对这个程序的 output 感到惊讶:(如果您喜欢谜题,请随时打开 Godbolt 链接并尝试自己找出原因) output: 错误的错误的错误的错误的在指责 Godbolt 缓存之 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM