#include <iostream>
#include <utility>
class X {
int m_x;
public:
X () = delete;
X (int x) : m_x (x) { std::cout << "X::X(int)" << std::endl; }
X (X&& src) : m_x (src.m_x) { src.m_x = -1; std::cout << "X::X(X&&)" << std::endl; }
~X () { std::cout << "X::~X, m_x = " << m_x << std::endl; }
};
void foo (X x) {
}
int main() {
X x (42);
foo (std::move (x));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCmNsYXNzIFggewoJaW50IG1feDsKCXB1YmxpYzoKCQlYICgpID0gZGVsZXRlOwoJCVggKGludCB4KSA6IG1feCAoeCkgeyBzdGQ6OmNvdXQgPDwgIlg6OlgoaW50KSIgPDwgc3RkOjplbmRsOyB9CgkJWCAoWCYmIHNyYykgOiBtX3ggKHNyYy5tX3gpIHsgc3JjLm1feCA9IC0xOyBzdGQ6OmNvdXQgPDwgIlg6OlgoWCYmKSIgPDwgc3RkOjplbmRsOyB9CgkJflggKCkgeyBzdGQ6OmNvdXQgPDwgIlg6On5YLCBtX3ggPSAiIDw8IG1feCA8PCBzdGQ6OmVuZGw7IH0KfTsKCnZvaWQgZm9vIChYIHgpIHsKCQp9CgoKaW50IG1haW4oKSB7CglYIHggKDQyKTsKCWZvbyAoc3RkOjptb3ZlICh4KSk7CglyZXR1cm4gMDsKfQ==