#include <iostream>
namespace Test {
using namespace std;
class A {
public:
virtual ~A() {
cout << "~A()" << endl;
}
A() {
cout << "A()\n";
}
A(A const& other) {
cout << "A(A const&)\n";
}
A(A&& other) {
cout << "A(A&&)\n";
}
A(A const&& other) {
cout << "A(A const&&)\n";
}
A& operator=(A const& other) {
cout << "operator=(A const&)\n";
return *this;
}
A& operator=(A&& other) {
cout << "operator=(A&&)\n";
return *this;
}
A& operator=(A const&& other) {
cout << "operator=(A const&&)\n";
return *this;
}
A const& operator=(A const& other) const {
cout << "operator=(A const&) const\n";
return *this;
}
A const& operator=(A&& other) const {
cout << "operator=(A&&) const\n";
return *this;
}
A const& operator=(A const&& other) const {
cout << "operator=(A const&&) const\n";
return *this;
}
A operator+(A const& other) const {
cout << "operator+(A const&) const\n";
return A();
}
};
} // Test
int main() {
using namespace Test;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIFRlc3QgewoJdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEgewpwdWJsaWM6Cgl2aXJ0dWFsIH5BKCkgewoJCWNvdXQgPDwgIn5BKCkiIDw8IGVuZGw7Cgl9CgoJQSgpIHsKCQljb3V0IDw8ICJBKClcbiI7Cgl9CgkKCUEoQSBjb25zdCYgb3RoZXIpIHsKCQljb3V0IDw8ICJBKEEgY29uc3QmKVxuIjsKCX0KCQoJQShBJiYgb3RoZXIpIHsKCQljb3V0IDw8ICJBKEEmJilcbiI7Cgl9CgoJQShBIGNvbnN0JiYgb3RoZXIpIHsKCQljb3V0IDw8ICJBKEEgY29uc3QmJilcbiI7Cgl9CgoJQSYgb3BlcmF0b3I9KEEgY29uc3QmIG90aGVyKSB7CgkJY291dCA8PCAib3BlcmF0b3I9KEEgY29uc3QmKVxuIjsKCQlyZXR1cm4gKnRoaXM7Cgl9CgoJQSYgb3BlcmF0b3I9KEEmJiBvdGhlcikgewoJCWNvdXQgPDwgIm9wZXJhdG9yPShBJiYpXG4iOwoJCXJldHVybiAqdGhpczsKCX0KCglBJiBvcGVyYXRvcj0oQSBjb25zdCYmIG90aGVyKSB7CgkJY291dCA8PCAib3BlcmF0b3I9KEEgY29uc3QmJilcbiI7CgkJcmV0dXJuICp0aGlzOwoJfQoKCUEgY29uc3QmIG9wZXJhdG9yPShBIGNvbnN0JiBvdGhlcikgY29uc3QgewoJCWNvdXQgPDwgIm9wZXJhdG9yPShBIGNvbnN0JikgY29uc3RcbiI7CgkJcmV0dXJuICp0aGlzOwoJfQoKCUEgY29uc3QmIG9wZXJhdG9yPShBJiYgb3RoZXIpIGNvbnN0IHsKCQljb3V0IDw8ICJvcGVyYXRvcj0oQSYmKSBjb25zdFxuIjsKCQlyZXR1cm4gKnRoaXM7Cgl9CgoJQSBjb25zdCYgb3BlcmF0b3I9KEEgY29uc3QmJiBvdGhlcikgY29uc3QgewoJCWNvdXQgPDwgIm9wZXJhdG9yPShBIGNvbnN0JiYpIGNvbnN0XG4iOwoJCXJldHVybiAqdGhpczsKCX0KCUEgb3BlcmF0b3IrKEEgY29uc3QmIG90aGVyKSBjb25zdCB7CgkJY291dCA8PCAib3BlcmF0b3IrKEEgY29uc3QmKSBjb25zdFxuIjsKCQlyZXR1cm4gQSgpOwoJfQp9Owp9IC8vIFRlc3QKCmludCBtYWluKCkgewoJdXNpbmcgbmFtZXNwYWNlIFRlc3Q7CglyZXR1cm4gMDsKfQo=