#include <iostream>
//
// 一時オブジェクトの寿命
//
struct something { ~something() { std::cout << "destructor" << std::endl; } };
something func() { return {}; }
int main()
{
something(); // instance of something is temporary object
func(); // returned value of func() is rvalue
1; // literal
std::cout << "=== main ===" << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8KLy8g5LiA5pmC44Kq44OW44K444Kn44Kv44OI44Gu5a+/5ZG9Ci8vCgpzdHJ1Y3Qgc29tZXRoaW5nIHsgfnNvbWV0aGluZygpIHsgc3RkOjpjb3V0IDw8ICJkZXN0cnVjdG9yIiA8PCBzdGQ6OmVuZGw7IH0gfTsKCnNvbWV0aGluZyBmdW5jKCkgeyByZXR1cm4ge307IH0KaW50IG1haW4oKQp7CiAgc29tZXRoaW5nKCk7IC8vIGluc3RhbmNlIG9mIHNvbWV0aGluZyBpcyB0ZW1wb3Jhcnkgb2JqZWN0CiAgZnVuYygpOyAvLyByZXR1cm5lZCB2YWx1ZSBvZiBmdW5jKCkgaXMgcnZhbHVlIAogIDE7IC8vIGxpdGVyYWwKICBzdGQ6OmNvdXQgPDwgIj09PSBtYWluID09PSIgPDwgc3RkOjplbmRsOwp9