aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/spaceship-err5.C
blob: 3dc2a0f23659701a6ff29b5338350d6e994b8ab6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// { dg-do compile { target c++20 } }
// Test [depr.arith.conv.enum] for <=>.

#include <compare>

enum E1 { e } e1;
enum E2 { f } e2;
static double d;

void
g ()
{
  void(e1 <=> e);
  e1 <=> d; // { dg-error "invalid operands of types .E1. and .double." }
  d <=> e1; // { dg-error "invalid operands of types .double. and .E1." }
  e <=> d; // { dg-error "invalid operands of types .E1. and .double." }
  d <=> e; // { dg-error "invalid operands of types .double. and .E1." }

  e <=> f; // { dg-error "invalid operands of types .E1. and .E2." }
  f <=> e; // { dg-error "invalid operands of types .E2. and .E1." }
  e1 <=> e2; // { dg-error "invalid operands of types .E1. and .E2." }
  e2 <=> e1; // { dg-error "invalid operands of types .E2. and .E1." }
}