#include <iostream>
#include <string>
using namespace std;
void messagebox(const char*) {
cout << "messagebox()" << endl;
}
struct tmp {
tmp(const char* content) : content(content) { cout << "tmp c'tor" << endl; }
~tmp() { cout << "tmp d'tor" << endl; }
const char* c_str() { return content.c_str(); }
private:
string content;
};
struct ss {
tmp str() { return tmp("test"); }
};
int main() {
ss s;
const char* name = s.str().c_str();
messagebox(name);
cout << endl << endl;
messagebox(s.str().c_str());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgIHZvaWQgbWVzc2FnZWJveChjb25zdCBjaGFyKikgewogICAgICAgIGNvdXQgPDwgIm1lc3NhZ2Vib3goKSIgPDwgZW5kbDsKICAgIH0KCiAgICBzdHJ1Y3QgdG1wIHsKICAgICAgICB0bXAoY29uc3QgY2hhciogY29udGVudCkgOiBjb250ZW50KGNvbnRlbnQpIHsgY291dCA8PCAidG1wIGMndG9yIiA8PCBlbmRsOyB9CiAgICAgICAgfnRtcCgpIHsgY291dCA8PCAidG1wIGQndG9yIiA8PCBlbmRsOyB9CiAgICAgICAgY29uc3QgY2hhciogY19zdHIoKSB7IHJldHVybiBjb250ZW50LmNfc3RyKCk7IH0KICAgIHByaXZhdGU6CiAgICAgICAgc3RyaW5nIGNvbnRlbnQ7CiAgICB9OwoKICAgIHN0cnVjdCBzcyB7CiAgICAgICAgdG1wIHN0cigpIHsgcmV0dXJuIHRtcCgidGVzdCIpOyB9CiAgICB9OwoKaW50IG1haW4oKSB7CglzcyBzOwoJY29uc3QgY2hhciogbmFtZSA9IHMuc3RyKCkuY19zdHIoKTsKCW1lc3NhZ2Vib3gobmFtZSk7CgkKCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwoJbWVzc2FnZWJveChzLnN0cigpLmNfc3RyKCkpOwoKCXJldHVybiAwOwp9