#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( ) ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE1lZGl1bSB7CglNZWRpdW0oKSB7IHN0ZDo6Y291dCA8PCAiTWVkaXVtIGN0b3JcbiI7IH0KCU1lZGl1bShjb25zdCBNZWRpdW0mIHJocykgeyBzdGQ6OmNvdXQgPDwgIk1lZGl1bSBjb3B5IGN0b3JcbiI7IH0KCU1lZGl1bSYgb3BlcmF0b3I9KGNvbnN0IE1lZGl1bSYgcmhzKSB7IHN0ZDo6Y291dCA8PCAiTWVkaXVtIG9wZXJhdG9yPVxuIjsgfQp9OwoKY2xhc3MgV3JhcHBlciB7CglNZWRpdW0gbWVkaXVtOwpwdWJsaWM6Cgl2b2lkIHNldF9zdGF0ZShNZWRpdW0gbWVkaXVtKQoJewoJCXRoaXMtPm1lZGl1bSA9IG1lZGl1bTsKCX0KfTsKCmludCBtYWluKCkgewoJc3RkOjpjb3V0IDw8ICIqQ3JlYXRpbmcgd1xuIjsKCVdyYXBwZXIgdzsKCXN0ZDo6Y291dCA8PCAiKmNyZWF0aW5nIE1lZGl1bVxuIjsKCU1lZGl1bSBtOwoJc3RkOjpjb3V0IDw8ICIqY2FsbGluZyBzZXRfc3RhdGVcbiI7Cgl3LnNldF9zdGF0ZShtKTsKCXN0ZDo6Y291dCA8PCAiKmNhbGxpbmcgc2V0X1N0YXRlKE1lZGl1bSgpKVxuIjsKCXcuc2V0X3N0YXRlKE1lZGl1bSgpKTsKfQ==