// P0466R5
// { dg-do compile { target c++20 } }
struct A { int a; };
struct B;
bool a = __builtin_is_corresponding_member ();			// { dg-error "needs two arguments" }
bool b = __builtin_is_corresponding_member (&A::a);		// { dg-error "needs two arguments" }
bool c = __builtin_is_corresponding_member (&A::a, &A::a, &A::a);	// { dg-error "needs two arguments" }
bool d = __builtin_is_corresponding_member (&A::a, 1);			// { dg-error "argument is not pointer to member" }
bool e = __builtin_is_corresponding_member (1.0, &A::a);		// { dg-error "argument is not pointer to member" }
bool f = __builtin_is_corresponding_member (1, A{});		// { dg-error "argument is not pointer to member" }
bool g = __builtin_is_corresponding_member (&A::a, (int B::*) nullptr);	// { dg-error "invalid use of incomplete type" }
bool h = __builtin_is_corresponding_member ((int B::*) nullptr, &A::a);	// { dg-error "invalid use of incomplete type" }