#include <iostream>
using namespace std;

class B {
public:
  B() {
    cout << "B ctor" << endl;
  }
  ~B() {
    cout << "B dtor" << endl;
  }
};

class A {
public:
  A(B b = B()) {
    cout << "A ctor" << endl;
  }
  ~A() {
    cout << "A dtor" << endl;
  }
};

void doTemp() {
  A();
}

void doStack() {
  A a;
}

int main() {
  cout << "temporary:" << endl;
  doTemp();
  cout << "stack:" << endl;
  doStack();

  return 0;
}