aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/spaceship-synth14.C
blob: 369d3a3e9dd3f02d635022e9c4d7d49a00027373 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Test virtual <=>.
// { dg-do run { target c++20 } }

#include <compare>

struct E;
struct D {
  std::partial_ordering operator<=>(const D&) const = default;
  virtual std::partial_ordering operator<=>(const E&) const = 0;
  float f;
  D(float f): f(f) {}
};
struct E : D {
  std::partial_ordering operator<=>(const E&) const override = default;
  int i;
  E(float f, int i): D(f), i(i) {}
};

int main()
{
  E e1{0.0,42};
  E e2{1.0,24};
  auto a = e1 <=> e2;
  if (!is_lt (e1 <=> e2))
    __builtin_abort();
}