// P1064R0
// { dg-do compile }
// { dg-options "-std=c++2a" }

struct A
{
  constexpr virtual int f () const { return 1; }
};

struct B : public A
{
  constexpr virtual int f () const { return 2; }
};

struct C
{
  A a;
  B b;
};

constexpr C c;
constexpr const A &d = c.a;
constexpr const A &e = c.b;
constexpr const B &f = c.b;
static_assert (c.a.f () == 1 && c.b.f () == 2);
static_assert (d.f () == 1 && e.f () == 2 && f.f () == 2);