#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;
}