| // PR c++/94907 |
| // { dg-do compile { target c++20 } } |
| |
| namespace std { struct strong_ordering { |
| int _v; |
| constexpr strong_ordering (int v) :_v(v) {} |
| constexpr operator int (void) const { return _v; } |
| static const strong_ordering less; |
| static const strong_ordering equal; |
| static const strong_ordering greater; |
| }; |
| constexpr strong_ordering strong_ordering::less = -1; |
| constexpr strong_ordering strong_ordering::equal = 0; |
| constexpr strong_ordering strong_ordering::greater = 1; |
| } |
| |
| struct E; |
| struct D { |
| virtual std::strong_ordering operator<=>(const struct E&) const = 0; |
| }; |
| struct E : D { |
| std::strong_ordering operator<=>(const E&) const override = default; |
| }; |