#include <iostream>
#include <memory>
using namespace std;
int main() {
auto pstr = make_unique<string>(5, '*');
cout << (pstr ? *pstr : "pstr is empty") << endl;
unique_ptr<string> pstr2(pstr.release());
// or: decltype(pstr) pstr2(pstr.release());
cout << (pstr ? *pstr : "pstr is empty") << endl;
cout << (pstr2 ? *pstr2 : "pstr2 is empty") << endl;
auto pstr3(move(pstr2));
// or: decltype(pstr2) pstr3(move(pstr2));
cout << (pstr2 ? *pstr2 : "pstr2 is empty") << endl;
cout << (pstr3 ? *pstr3 : "pstr3 is empty") << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglhdXRvIHBzdHIgPSBtYWtlX3VuaXF1ZTxzdHJpbmc+KDUsICcqJyk7Cgljb3V0IDw8IChwc3RyID8gKnBzdHIgOiAicHN0ciBpcyBlbXB0eSIpIDw8IGVuZGw7Cgl1bmlxdWVfcHRyPHN0cmluZz4gcHN0cjIocHN0ci5yZWxlYXNlKCkpOwoJLy8gb3I6IGRlY2x0eXBlKHBzdHIpIHBzdHIyKHBzdHIucmVsZWFzZSgpKTsKCWNvdXQgPDwgKHBzdHIgPyAqcHN0ciA6ICJwc3RyIGlzIGVtcHR5IikgPDwgZW5kbDsKCWNvdXQgPDwgKHBzdHIyID8gKnBzdHIyIDogInBzdHIyIGlzIGVtcHR5IikgPDwgZW5kbDsKCWF1dG8gcHN0cjMobW92ZShwc3RyMikpOwoJLy8gb3I6IGRlY2x0eXBlKHBzdHIyKSBwc3RyMyhtb3ZlKHBzdHIyKSk7Cgljb3V0IDw8IChwc3RyMiA/ICpwc3RyMiA6ICJwc3RyMiBpcyBlbXB0eSIpIDw8IGVuZGw7Cgljb3V0IDw8IChwc3RyMyA/ICpwc3RyMyA6ICJwc3RyMyBpcyBlbXB0eSIpIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==