// { 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." }
}