#include <memory>
class Foo {};
class Bar: public Foo {};
namespace std {
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
}
std::unique_ptr<Foo> makeFoo() {
std::unique_ptr<Bar> bar = std::make_unique<Bar>();
return std::move(bar);
}
int main() {
std::unique_ptr<Foo> foo = makeFoo();
}
I2luY2x1ZGUgPG1lbW9yeT4KCmNsYXNzIEZvbyB7fTsKY2xhc3MgQmFyOiBwdWJsaWMgRm9vIHt9OwoKbmFtZXNwYWNlIHN0ZCB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgogICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgIH0KfQoKc3RkOjp1bmlxdWVfcHRyPEZvbz4gbWFrZUZvbygpIHsKICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXI+IGJhciA9IHN0ZDo6bWFrZV91bmlxdWU8QmFyPigpOwogICAgcmV0dXJuIHN0ZDo6bW92ZShiYXIpOwp9CgoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9vPiBmb28gPSBtYWtlRm9vKCk7Cn0K