#include <iostream>
#include <vector>
template <class Derived>
struct Base
{
Base()
{
static_cast<Derived*>(this)->foo();
}
std::vector<int> m_ints;
};
struct Derived : Base<Derived>
{
Derived() : Base()
{
std::cout << a;
}
void foo()
{
m_ints.push_back(37);
a = 4;
}
int a;
};
int main()
{
Derived d;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQ+CnN0cnVjdCBCYXNlCnsKCUJhc2UoKQoJewoJCXN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKS0+Zm9vKCk7CQoJfQoKCXN0ZDo6dmVjdG9yPGludD4gbV9pbnRzOwp9OwoKc3RydWN0IERlcml2ZWQgOiBCYXNlPERlcml2ZWQ+CnsKCURlcml2ZWQoKSA6IEJhc2UoKSAKCXsKCQlzdGQ6OmNvdXQgPDwgYTsKCX0KCgl2b2lkIGZvbygpCgl7CgkJbV9pbnRzLnB1c2hfYmFjaygzNyk7CgkJYSA9IDQ7Cgl9CgoJaW50IGE7Cn07CgppbnQgbWFpbigpIAp7CglEZXJpdmVkIGQ7CglyZXR1cm4gMDsKfQ==