#include <iostream>
#include <memory>
class C{
public:
int x;
};
class A{
public:
A(std::unique_ptr<C> c) : c(std::move(c)){
if(c == nullptr){
c = std::unique_ptr<C>(new C);
c->x = 1;
}
}
void print(){
std::cout << c->x << std::endl;
}
private:
std::unique_ptr<C> c;
};
class B : public A{
public:
B(std::unique_ptr<C> c) : A(std::move(c)){
}
private:
};
int main(int argc, char* argv[]){
B b(std::move(nullptr));
b.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKY2xhc3MgQ3sKcHVibGljOgogIGludCB4Owp9OwoKY2xhc3MgQXsKcHVibGljOgogIEEoc3RkOjp1bmlxdWVfcHRyPEM+IGMpIDogYyhzdGQ6Om1vdmUoYykpewogICAgaWYoYyA9PSBudWxscHRyKXsKICAgICAgYyA9IHN0ZDo6dW5pcXVlX3B0cjxDPihuZXcgQyk7CiAgICAgIGMtPnggPSAxOwogICAgfQogIH0KICB2b2lkIHByaW50KCl7CiAgICBzdGQ6OmNvdXQgPDwgYy0+eCA8PCBzdGQ6OmVuZGw7CiAgfQpwcml2YXRlOgogIHN0ZDo6dW5pcXVlX3B0cjxDPiBjOwp9OwoKY2xhc3MgQiA6IHB1YmxpYyBBewpwdWJsaWM6CiAgQihzdGQ6OnVuaXF1ZV9wdHI8Qz4gYykgOiBBKHN0ZDo6bW92ZShjKSl7CiAgfQpwcml2YXRlOgp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSl7CiAgQiBiKHN0ZDo6bW92ZShudWxscHRyKSk7CiAgYi5wcmludCgpOwogIHJldHVybiAwOwp9