Construtor C ++ com referência rvalue

Considere esta classe com três construtores:

<code>class Circle {

public:
 Circle(int r) {
      _radius = r;
 }

Circle(const Circle& c){
    _radius = c.radius();
    cout << endl << "Copy constructor with lvalue reference. Radius: " << _radius;
}

Circle(Circle&& c){
    _radius = c.radius();
    cout << endl << "Copy constructor with rvalue reference. Radius:" << _radius;
}

int radius() const {
    return _radius;
}

private:
    int _radius;
};

int main() {
     Circle c1(2);
     Circle c2(c1);
     cout << endl << c2.radius(); 
     Circle c3(Circle(4));
     cout << endl << c3.radius(); 
     return 0;
 }
</code>

Compilado com "g ++ -std = c ++ 0x". A saída é:

<code>Copy constructor with lvalue reference. Radius: 2
2
4
</code>

ESTÁ BEM. Os construtores corretos para os dois primeiros casos são chamados. Mas para o terceiro caso, ou seja, Circle c3 (Circle (4)), eu esperaria que o terceiro construtor (copy constructor with rvalue referecne) fosse chamado, mas não é o caso. Obviamente, algum construtor é chamado, já que c3 é instanciado corretamente, mas não entendo por que o compilador não está usando o explicitamente fornecido. Estou faltando alguma coisa aqui?

questionAnswers(2)

yourAnswerToTheQuestion