I'm trying to understand rvalue reference. This is the code I've written so far:
class A {
public:
    A(const char* str) {
        std::cout << str;
    }
    A(A&& other) {
        std::cout << "other";
    }
};
int main() {
    A m(A(A(A("hello"))));
}
The output is only "hello", which makes me confused.
Since A("hello") is a temporary object passed to the second constructor, But the code output is as if only the first constructor is called.
I guess either this is a compiler optimization or i miss some details about constructors and rvalues.
 
     
     
    