#include <iostream>
#include <functional>
#include <vector>
struct Foo
{
int i;
};
std::vector<std::reference_wrapper<const Foo>> foos;
void store(const Foo& container)
{
foos.push_back(std::cref(container));
}
int main()
{
Foo f{5};
const Foo f1(f);
store(f);
store(f);
store(f);
store(f1);
for (auto const& f: foos)
{
std::cout << f.get().i << "\n";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBGb28KewogICAgaW50IGk7Cn07CgpzdGQ6OnZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IEZvbz4+IGZvb3M7Cgp2b2lkIHN0b3JlKGNvbnN0IEZvbyYgY29udGFpbmVyKQp7CiAgICBmb29zLnB1c2hfYmFjayhzdGQ6OmNyZWYoY29udGFpbmVyKSk7Cn0KCmludCBtYWluKCkKewoKICAgIEZvbyBmezV9OwoKICAgIGNvbnN0IEZvbyBmMShmKTsKCiAgICBzdG9yZShmKTsKICAgIHN0b3JlKGYpOwogICAgc3RvcmUoZik7CiAgICBzdG9yZShmMSk7CgogICAgZm9yIChhdXRvIGNvbnN0JiBmOiBmb29zKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCBmLmdldCgpLmkgPDwgIlxuIjsKICAgIH0KfQo=