#include <iostream>
#include <vector>

class Foo {
public:
	Foo(int id) : id(id) { std::cout << "foo " << id << " constructed" << std::endl; }
	~Foo() { std::cout << "foo " << id << " destructed" << std::endl; }

    int id;
};

int main() {
	std::vector<Foo> foos;
	
	for (int i = 0; i < 2; i++) {
		foos.emplace_back(i);
		
		auto& foo = foos.back();
		std::cout << "Play with " << foo.id << std::endl;
	}
	
	for (auto&& foo : foos) {
		std::cout << "I'm foo " << foo.id << std::endl;
	}
	
	return 0;
}