#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

#define V(p) static_cast<void const*>(p)

struct Thing {
	Thing() {}
	Thing(Thing const & t) {
		cout << "Copy " << V(&t) << " to " << V(this) << endl;
	}
	Thing(Thing && t) noexcept {
		cout << "Move " << V(&t) << " to " << V(this) << endl;
	}
};

int main() {
	vector<Thing> things;
	for (int i = 0; i < 10; ++i) {
		cout << "Have " << things.size() << " (capacity " << things.capacity()
			<< "), adding another:\n";
		things.emplace_back();
	}
}