#include <iostream>

using namespace std;
struct foo
{
  int i;
  foo(int i): i(i) { cout << "int constructor, i = " << i << '\n'; }
  foo(const foo&f): i(f.i) {cout << "Copy constructor, i = " << i << '\n';}
  void operator=(const foo&f) {i = f.i; cout << "Assignment. i = " << i << '\n'; }
  ~foo() {cout << "Destructor. i = " << i << '\n'; }
};


int main()
{
  foo a(5);
  foo b= 6;
  foo c = foo(7);
}
