#include <iostream>
struct test_t{
int value;
test_t(){
std::cerr << __PRETTY_FUNCTION__ << '\n';
}
test_t(int&& val) : value{std::move(val)}{
std::cerr << __PRETTY_FUNCTION__ << '\n';
}
test_t(const test_t& rhs) : value{rhs.value}{
std::cerr << __PRETTY_FUNCTION__ << '\n';
}
test_t& operator= (const test_t& rhs){
std::cerr << __PRETTY_FUNCTION__ << '\n';
value = rhs.value;
return *this;
}
test_t(test_t&& rhs) : value{std::move(rhs.value)}{
std::cerr << __PRETTY_FUNCTION__ << '\n';
}
test_t& operator= (test_t&& rhs){
std::cerr << __PRETTY_FUNCTION__ << '\n';
value = std::move(rhs.value);
return *this;
}
~test_t(){
std::cerr << __PRETTY_FUNCTION__ << '\n';
}
};
#include <vector>
int main(){
std::vector<test_t> container;
for(int n=0; n!=3; ++n) {
std::cout << n << '\n';
container.emplace_back();
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCnN0cnVjdCB0ZXN0X3R7CiAgICBpbnQgdmFsdWU7CgogICAgdGVzdF90KCl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90KGludCYmIHZhbCkgOiB2YWx1ZXtzdGQ6Om1vdmUodmFsKX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90KGNvbnN0IHRlc3RfdCYgcmhzKSA6IHZhbHVle3Jocy52YWx1ZX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90JiBvcGVyYXRvcj0gKGNvbnN0IHRlc3RfdCYgcmhzKXsKICAgICAgICBzdGQ6OmNlcnIgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCAnXG4nOwogICAgICAgIHZhbHVlID0gcmhzLnZhbHVlOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgogICAgdGVzdF90KHRlc3RfdCYmIHJocykgOiB2YWx1ZXtzdGQ6Om1vdmUocmhzLnZhbHVlKX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90JiBvcGVyYXRvcj0gKHRlc3RfdCYmIHJocyl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgICAgICB2YWx1ZSA9IHN0ZDo6bW92ZShyaHMudmFsdWUpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB+dGVzdF90KCl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KfTsKCgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKXsKICAgIHN0ZDo6dmVjdG9yPHRlc3RfdD4gY29udGFpbmVyOwoKICAgIGZvcihpbnQgbj0wOyBuIT0zOyArK24pIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgbiA8PCAnXG4nOwogICAgICAgIGNvbnRhaW5lci5lbXBsYWNlX2JhY2soKTsKICAgIH0KfQo=