#include <iostream>

class foo {
public:
    foo() { std::cout << "ctor" << std::endl; }
    foo(const foo & x) { std::cout << "copy" << std::endl; }
    foo(foo && x) { std::cout << "move" << std::endl; }
};

class move {
	foo a;
};

class does_not_move {
	foo a;
public:
	does_not_move() {}
	does_not_move(const does_not_move &m) : a(m.a) {}
};

int main() {
	std::cout << "--- move ---" << std::endl;
    move m;
    move m2(std::move(m));
	std::cout << "--- doesn't move ---" << std::endl;
    does_not_move dm;
    does_not_move dm2(std::move(dm));
    return 0;
}