#include <iostream>
#include <memory>
struct Entry {
Entry(std::string name) : name_(name) { std::cout << "Constructor for " + name_ + '\n'; }
~Entry() { std::cout << "Destructor for " + name_ + '\n'; }
std::string name_;
};
void modify_entry(Entry* e_ptr){
std::cout << "Inside modify_entry()\n";
std::unique_ptr<Entry>{e_ptr}->name_ += " Doe";
}
int main() {
Entry* entry_ptr = new Entry("John");
modify_entry(entry_ptr);
std::cout << "Back from modify_entry()\n";
std::cout << entry_ptr->name_ << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IEVudHJ5IHsKICAgIAogICAgRW50cnkoc3RkOjpzdHJpbmcgbmFtZSkgOiBuYW1lXyhuYW1lKSB7IHN0ZDo6Y291dCA8PCAiQ29uc3RydWN0b3IgZm9yICIgKyBuYW1lXyArICdcbic7IH0KICAgIH5FbnRyeSgpIHsgc3RkOjpjb3V0IDw8ICJEZXN0cnVjdG9yIGZvciAiICsgbmFtZV8gKyAnXG4nOyB9CiAgICBzdGQ6OnN0cmluZyBuYW1lXzsKICAgIAp9OwoKdm9pZCBtb2RpZnlfZW50cnkoRW50cnkqIGVfcHRyKXsKICAgIAogICAgc3RkOjpjb3V0IDw8ICJJbnNpZGUgbW9kaWZ5X2VudHJ5KClcbiI7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+e2VfcHRyfS0+bmFtZV8gKz0gIiBEb2UiOwoKfQoKCmludCBtYWluKCkgewoKICAgIEVudHJ5KiBlbnRyeV9wdHIgPSBuZXcgRW50cnkoIkpvaG4iKTsKICAgIG1vZGlmeV9lbnRyeShlbnRyeV9wdHIpOwogICAgc3RkOjpjb3V0IDw8ICJCYWNrIGZyb20gbW9kaWZ5X2VudHJ5KClcbiI7CiAgICBzdGQ6OmNvdXQgPDwgZW50cnlfcHRyLT5uYW1lXyA8PCAnXG4nOwoKCXJldHVybiAwOwoJCn0=