#include <iostream>
using namespace std;
class test {
public :
test( int input = 0 )
: value( input)
{
std:: cout << "default constructor called with " << value << "\n " ;
}
test( test const & other)
: value( other.value )
{
std:: cout << "copy constructor called with " << value << "\n " ;
}
test( test&& other) noexcept
: value( 0 )
{
std:: swap ( value, other.value ) ;
std:: cout << "move constructor called with " << value << "\n " ;
}
test& operator= ( test const & other)
{
value = other.value ;
std:: cout << "copy assignment called with " << value << "\n " ;
return * this ;
}
test& operator= ( test&& other) noexcept
{
std:: swap ( value, other.value ) ;
std:: cout << "move assignment called with " << value << "\n " ;
return * this ;
}
private :
int value;
} ;
int main( ) {
test myTest1 = std:: move ( test( 1 ) ) ;
test myTest2 = test( 2 ) ;
myTest1 = myTest2;
myTest1 = std:: move ( myTest2) ;
// your code goes here
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgdGVzdCB7CiAgICBwdWJsaWM6Cgl0ZXN0KGludCBpbnB1dCA9IDApCgkJOiB2YWx1ZShpbnB1dCkKCXsKCQlzdGQ6OmNvdXQgPDwgImRlZmF1bHQgY29uc3RydWN0b3IgY2FsbGVkIHdpdGggIiA8PCB2YWx1ZSA8PCAiXG4iOwoJfQoJCgl0ZXN0KHRlc3QgY29uc3QmIG90aGVyKQoJCTogdmFsdWUob3RoZXIudmFsdWUpCgl7CgkJc3RkOjpjb3V0IDw8ICJjb3B5IGNvbnN0cnVjdG9yIGNhbGxlZCB3aXRoICIgPDwgdmFsdWUgPDwgIlxuIjsKCX0KCQkKCXRlc3QodGVzdCYmIG90aGVyKSBub2V4Y2VwdAoJCTogdmFsdWUoMCkKCXsKCQlzdGQ6OnN3YXAodmFsdWUsIG90aGVyLnZhbHVlKTsKCQlzdGQ6OmNvdXQgPDwgIm1vdmUgY29uc3RydWN0b3IgY2FsbGVkIHdpdGggIiA8PCB2YWx1ZSA8PCAiXG4iOwoJfQoJCgl0ZXN0JiBvcGVyYXRvcj0odGVzdCBjb25zdCYgb3RoZXIpCgl7CQoJCXZhbHVlID0gb3RoZXIudmFsdWU7CgkJc3RkOjpjb3V0IDw8ICJjb3B5IGFzc2lnbm1lbnQgY2FsbGVkIHdpdGggIiA8PCB2YWx1ZSA8PCAiXG4iOwoJCXJldHVybiAqdGhpczsKCX0KCQoJdGVzdCYgb3BlcmF0b3I9KHRlc3QmJiBvdGhlcikgbm9leGNlcHQKCXsKCQlzdGQ6OnN3YXAodmFsdWUsIG90aGVyLnZhbHVlKTsKCQlzdGQ6OmNvdXQgPDwgIm1vdmUgYXNzaWdubWVudCBjYWxsZWQgd2l0aCAiIDw8IHZhbHVlIDw8ICJcbiI7CgkJcmV0dXJuICp0aGlzOwoJfQogICAgcHJpdmF0ZToKCWludCB2YWx1ZTsKfTsKCmludCBtYWluKCkgewoJdGVzdCBteVRlc3QxID0gc3RkOjptb3ZlKHRlc3QoMSkpOwoJdGVzdCBteVRlc3QyID0gdGVzdCgyKTsKCW15VGVzdDEgPSBteVRlc3QyOwoJbXlUZXN0MSA9IHN0ZDo6bW92ZShteVRlc3QyKTsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9