why would the compiler error on a->foo saying it's not usable in a constant expression?```cpp
struct A
{
constexpr virtual int foo()
{
return 42;
}
virtual ~A() = default;
};
struct B : public A
{
constexpr int foo() override
{
return 10;
}
};
constexpr int bar()
{
A* a = new B{};
constexpr int val = a->foo(); // 'a' not usable
delete a;
return 5;
}
int main()
{
constexpr int b = bar();
}````






