// { dg-do compile { target c++20 } }
// { dg-additional-options "-fdelete-null-pointer-checks" }

struct A
{
  int i;
  constexpr A (int i): i(i) {}
  // auto operator<=> (const A&) = default;
};

template <A a>
struct B
{
  static constexpr int i = a.i;
  static constexpr A const* ap = &a;
};

template <A a>
struct C
{
  static constexpr A const* ap = &a;
};

static_assert(B<1>::i == 1);
static_assert(B<2>::i == 2);
static_assert(B<1>::ap == C<1>::ap);
static_assert(B<1>::ap != C<2>::ap);

// { dg-final { scan-assembler "_Z1fP1BIXtl1ALi1EEEE" } }
// { dg-final { scan-assembler "_ZTAXtl1ALi1EEE" } }
const void* f(B<1> *p) {
  constexpr int i = p->ap->i;
  return p->ap;
}
