#include <iostream>

//
// 危険なコード
// デストラクタが呼ばれた後のオブジェクトを参照している
//

struct something
{
  int a = 0;
  int& get() { return ( a ); }
  ~something() { std::cout << "destructor" << std::endl; }
};

int main()
{
  int& n = something().get();
  // n is destructed.
  std::cout << n << std::endl; // oops!
}
