#include <iostream>
#include <vector>
struct Object {
Object() { printf("ctor\n"); }
Object(const Object&) { printf("copy ctor\n"); }
Object& operator=(const Object&) { printf("copy assign\n"); return *this; }
Object(Object&&) { printf("move ctor\n"); }
Object& operator=(Object&&) { printf("move assign\n"); return *this; }
};
int main() {
std::vector<Object> v{};
v.push_back(Object{});
printf("second element\n");
v.push_back(Object{});
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBPYmplY3QgewogICAgT2JqZWN0KCkgeyBwcmludGYoImN0b3JcbiIpOyB9CiAgICBPYmplY3QoY29uc3QgT2JqZWN0JikgeyBwcmludGYoImNvcHkgY3RvclxuIik7IH0KICAgIE9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IE9iamVjdCYpIHsgcHJpbnRmKCJjb3B5IGFzc2lnblxuIik7IHJldHVybiAqdGhpczsgfQogICAgT2JqZWN0KE9iamVjdCYmKSB7IHByaW50ZigibW92ZSBjdG9yXG4iKTsgfQogICAgT2JqZWN0JiBvcGVyYXRvcj0oT2JqZWN0JiYpIHsgcHJpbnRmKCJtb3ZlIGFzc2lnblxuIik7IHJldHVybiAqdGhpczsgfQp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxPYmplY3Q+IHZ7fTsKCiAgICB2LnB1c2hfYmFjayhPYmplY3R7fSk7CgogICAgcHJpbnRmKCJzZWNvbmQgZWxlbWVudFxuIik7CgogICAgdi5wdXNoX2JhY2soT2JqZWN0e30pOwp9