I was testing my knowledge in C++ and have encountered a problem. Consider this code:
class A
{
public:
    A(int n = 0)
            : m_n(n)
    {
        std::cout << 'd';
    }
    A(const A& a)
            : m_n(a.m_n)
    {
        std::cout << 'c';
    }
    A(A&& a){
        std::cout<<'r';
    }
private:
    int m_n;
};
int main()
{
    A a = A();
    std::cout << std::endl;
    return 0;
}
Clearly, the A() constructor is an rvalue, as no permanent object has been created. So I think that first I have to see "d" as output. Then we are copying the rvalue to our new object, which is yet to be initialised. I have implemented a copy constructor that accepts an rvalue as an argument but I did not see the proof (no "r" output).
Can someone explain why that is?
 
    