#include <iostream>
#include <memory>
using namespace std;
class Foo
{
Foo() {}
public:
static std::shared_ptr<Foo> Make()
{
struct Bootstrap : public Foo {};
return std::make_shared<Bootstrap>();
}
void Print()
{
std::cout << "Hello, world!";
}
};
int main()
{
auto foo = Foo::Make();
foo->Print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRm9vCnsKCUZvbygpIHt9CnB1YmxpYzoKCXN0YXRpYyBzdGQ6OnNoYXJlZF9wdHI8Rm9vPiBNYWtlKCkKCXsKCQlzdHJ1Y3QgQm9vdHN0cmFwIDogcHVibGljIEZvbyB7fTsKCQlyZXR1cm4gc3RkOjptYWtlX3NoYXJlZDxCb290c3RyYXA+KCk7Cgl9CgkKCXZvaWQgUHJpbnQoKQoJewoJCXN0ZDo6Y291dCA8PCAiSGVsbG8sIHdvcmxkISI7Cgl9Cn07CgppbnQgbWFpbigpCnsKCWF1dG8gZm9vID0gRm9vOjpNYWtlKCk7Cglmb28tPlByaW50KCk7Cn0=