// { dg-do compile { target c++20 } }

#include <compare>

#define assert(X) do { if (!(X)) __builtin_abort(); } while(0)

void f(){}
void g(){}

int main()
{
  {
    const auto v = &f <=> &g;	// { dg-error "invalid operands" }
  }

  {
    struct A { int i; int j; };
    constexpr auto v = &A::i <=> &A::j; // { dg-error "invalid operands" }
  }

  {
    struct A { void f(); };
    constexpr auto v = &A::f <=> &A::f; // { dg-error "invalid operands" }
  }
}