#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;
}