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