//g++ 4.9.3
#include <iostream>
using namespace std;
class Base {
public :
Base( ) {
cout << "create Base " << this << endl;
}
Base( const Base& a) {
cout << "create copy Base " << this << " " << & a<< endl;
}
/* Base(Base&& a)
{
cout<<"create move Base "<<this<<" "<<&a<<endl;
}*/
~Base( ) {
cout << "deleting Base " << this << endl;
}
Base & operator = ( const Base & a)
{
cout << "operator " << this << " " << & a<< endl;
return * this ;
}
} ;
Base func ( const Base& x_)
{
Base x( x_) ;
cout << "*********************" << endl;
return x;
}
int main( )
{
Base a;
Base b;
cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << endl;
b = func ( a) ;
cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << endl;
return 0 ;
}
Ly9nKysgIDQuOS4zCgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY2xhc3MgQmFzZSB7CnB1YmxpYzoKICAgIEJhc2UoKXsKICAgICAgICBjb3V0PDwiY3JlYXRlIEJhc2UgIjw8dGhpczw8ZW5kbDsKICAgIH0KICAgIEJhc2UoY29uc3QgQmFzZSYgYSl7CiAgICAgICAgY291dDw8ImNyZWF0ZSBjb3B5IEJhc2UgIjw8dGhpczw8IiAiPDwmYTw8ZW5kbDsKICAgIH0KICAgLyogQmFzZShCYXNlJiYgYSkgIAp7CiAgICAgICAgY291dDw8ImNyZWF0ZSBtb3ZlIEJhc2UgIjw8dGhpczw8IiAiPDwmYTw8ZW5kbDsKICAgIH0qLwogICAgfkJhc2UoKSB7CiAgICAgICAgY291dDw8ImRlbGV0aW5nIEJhc2UgIjw8dGhpczw8ZW5kbDsKICAgIH0KIAogICAgQmFzZSAmIG9wZXJhdG9yID0gKGNvbnN0IEJhc2UgJmEpCiAgICB7CiAgICAJY291dDw8Im9wZXJhdG9yICI8PHRoaXM8PCIgIjw8JmE8PGVuZGw7CiAgICAJcmV0dXJuICp0aGlzOwogICAgfQogCiAKfTsKIApCYXNlIGZ1bmMgKGNvbnN0IEJhc2UmIHhfKQp7CiAgICBCYXNlIHgoeF8pOwoJY291dDw8IioqKioqKioqKioqKioqKioqKioqKiI8PGVuZGw7CiAKCXJldHVybiB4Owp9CiAKaW50IG1haW4oKQp7CiAKICAgICAgICBCYXNlIGE7CiAKIAogICAgICAgQmFzZSBiOyAKIAogICAgICAgIGNvdXQ8PCIhISEhISEhISEhISEhISEhISEhISEhISEhISI8PGVuZGw7CiAKICAgICAgIGIgPSBmdW5jIChhKTsKIAogICAgICAgY291dDw8IiEhISEhISEhISEhISEhISEhISEhISEhISEhIjw8ZW5kbDsKIAogICAgcmV0dXJuIDA7Cn0=