#include <iostream>
using namespace std;

struct Medium {
	Medium() { std::cout << "Medium ctor\n"; }
	Medium(const Medium& rhs) { std::cout << "Medium copy ctor\n"; }
	Medium& operator=(const Medium& rhs) { std::cout << "Medium operator=\n"; }
};

class Wrapper {
	Medium medium;
public:
	void set_state(Medium medium)
	{
		this->medium = medium;
	}
};

int main() {
	std::cout << "*Creating w\n";
	Wrapper w;
	std::cout << "*creating Medium\n";
	Medium m;
	std::cout << "*calling set_state\n";
	w.set_state(m);
	std::cout << "*calling set_State(Medium())\n";
	w.set_state(Medium());
}