#include <iostream>
#include <vector>
struct my_struct {
int i;
my_struct()
: my_struct(0)
{
}
my_struct(int i)
: i(i)
{
std::cout << "constructed: " << i << std::endl;
}
my_struct(my_struct&& obj) noexcept
: i(obj.i)
{
std::cout << "moved: " << i << std::endl;
}
my_struct(const my_struct& obj) noexcept
: i(obj.i)
{
std::cout << "copied: " << i << std::endl;
}
my_struct& operator =(const my_struct& obj) {
i = obj.i;
std::cout << "assigned: " << i << std::endl;
return *this;
}
};
int main() {
std::vector<my_struct> v{1,2,3};
std::cout << "prepare to resize" << std::endl;
v.resize(32, my_struct(9));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IG15X3N0cnVjdCB7CiAgICBpbnQgaTsKCiAgICBteV9zdHJ1Y3QoKQogICAgICAgIDogbXlfc3RydWN0KDApCiAgICB7CiAgICB9CgogICAgbXlfc3RydWN0KGludCBpKQogICAgICAgIDogaShpKQogICAgeyAgIAogICAgICAgIHN0ZDo6Y291dCA8PCAiY29uc3RydWN0ZWQ6ICIgPDwgaSA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgbXlfc3RydWN0KG15X3N0cnVjdCYmIG9iaikgbm9leGNlcHQKICAgICAgICA6IGkob2JqLmkpCiAgICB7ICAgCiAgICAgICAgc3RkOjpjb3V0IDw8ICJtb3ZlZDogIiA8PCBpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICBteV9zdHJ1Y3QoY29uc3QgbXlfc3RydWN0JiBvYmopIG5vZXhjZXB0CiAgICAgICAgOiBpKG9iai5pKQogICAgeyAgIAogICAgICAgIHN0ZDo6Y291dCA8PCAiY29waWVkOiAiIDw8IGkgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIG15X3N0cnVjdCYgb3BlcmF0b3IgPShjb25zdCBteV9zdHJ1Y3QmIG9iaikgewogICAgICAgIGkgPSBvYmouaTsKICAgICAgICBzdGQ6OmNvdXQgPDwgImFzc2lnbmVkOiAiIDw8IGkgPDwgc3RkOjplbmRsOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8bXlfc3RydWN0PiB2ezEsMiwzfTsKICAgIHN0ZDo6Y291dCA8PCAicHJlcGFyZSB0byByZXNpemUiIDw8IHN0ZDo6ZW5kbDsKICAgIHYucmVzaXplKDMyLCBteV9zdHJ1Y3QoOSkpOwp9Cg==