#include <iostream>
using std::cerr;
class A
{
public:
A() { cerr << "A::A()\n"; }
A(const A &) { cerr << "A::A(const A&)\n"; }
A(A &&) { cerr << "A::A(A&&)\n"; }
A(const A &&) = delete;
A& operator = (const A &) { cerr << "A::operator=(const A&)\n"; return *this; }
A& operator = (A &&) { cerr << "A::operator(A&&)\n"; return *this; }
A& operator = (const A &&) = delete;
~A() { cerr << "A::~A()\n"; }
const A get() const { cerr << "const A A::get() const\n"; return A(); }
A get() { cerr << "A A::get()\n"; return A(); }
};
int main()
{
A a;
A b = a.get();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgc3RkOjpjZXJyOwoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIEEoKSB7IGNlcnIgPDwgIkE6OkEoKVxuIjsgfQogICAgQShjb25zdCBBICYpIHsgY2VyciA8PCAiQTo6QShjb25zdCBBJilcbiI7IH0KICAgIEEoQSAmJikgeyBjZXJyIDw8ICJBOjpBKEEmJilcbiI7IH0KICAgIEEoY29uc3QgQSAmJikgPSBkZWxldGU7CiAgICBBJiBvcGVyYXRvciA9IChjb25zdCBBICYpIHsgY2VyciA8PCAiQTo6b3BlcmF0b3I9KGNvbnN0IEEmKVxuIjsgcmV0dXJuICp0aGlzOyB9CiAgICBBJiBvcGVyYXRvciA9IChBICYmKSB7IGNlcnIgPDwgIkE6Om9wZXJhdG9yKEEmJilcbiI7IHJldHVybiAqdGhpczsgfQogICAgQSYgb3BlcmF0b3IgPSAoY29uc3QgQSAmJikgPSBkZWxldGU7CiAgICB+QSgpIHsgY2VyciA8PCAiQTo6fkEoKVxuIjsgfQoKICAgIGNvbnN0IEEgZ2V0KCkgY29uc3QgeyBjZXJyIDw8ICJjb25zdCBBIEE6OmdldCgpIGNvbnN0XG4iOyByZXR1cm4gQSgpOyB9CiAgICBBIGdldCgpIHsgY2VyciA8PCAiQSBBOjpnZXQoKVxuIjsgcmV0dXJuIEEoKTsgfQp9OwoKaW50IG1haW4oKQp7CiAgICBBIGE7CiAgICBBIGIgPSBhLmdldCgpOwp9