Vptr Not Ready Yet

What does this print?

#include <iostream>

struct Base {
    Base() { describe(); }
    virtual void describe() { std::cout << "Base\n"; }
};

struct Derived : Base {
    int value = 42;
    void describe() override { std::cout << "Derived " << value << "\n"; }
};

int main() {
    Derived d;
    d.describe();
}
A

Undefined behaviour: calling a virtual function from a constructor may print anything or crash.

B

Base then Derived 42

C

Derived 0 then Derived 42

D

Derived 42 twice