#include <iostream>
#include <utility>
using namespace std;

struct LogMe {
	std::string member;

	LogMe() {
		cout << __FUNCTION__ << " - def.ctor!" << endl;
	}
	~LogMe() {
		cout << __FUNCTION__ << " - dtor!" << endl;
	}
	LogMe(LogMe const&, int def=0) {
		cout << __FUNCTION__ << " - cpy.ctor(with default arg)!" << endl;
	}
	LogMe& operator=(LogMe const&) {
		cout << __FUNCTION__ << " - cpy.assign.op!" << endl;
		return *this;
	}
};

int main() {
	cout << "# Construct Object via LogMe obj = LogMe()\n";
	LogMe obj1 = LogMe();
	cout << "# Construct Object via LogMe obj;\n";
	LogMe obj2;

	return 0;
}