#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()
{
    const A a;
    A b = a.get();
}