#include <cstddef>
#include <iostream>
#include <memory>
#include <vector>
struct X
{
X() { ++count; std::cout << "Constructing, count = " << count << "\n"; }
~X() { --count; std::cout << "Destructing, count = " << count << "\n"; }
static std::size_t count;
};
std::size_t X::count = 0;
int main()
{
std::vector<std::unique_ptr<X>> vec;
vec.reserve(2);
// one way
vec.push_back(std::unique_ptr<X>(new X));
// another way
vec.emplace_back(new X);
return 0;
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBYCnsKICAgIFgoKSB7ICsrY291bnQ7IHN0ZDo6Y291dCA8PCAiQ29uc3RydWN0aW5nLCBjb3VudCA9ICIgPDwgY291bnQgPDwgIlxuIjsgfQogICAgflgoKSB7IC0tY291bnQ7IHN0ZDo6Y291dCA8PCAiRGVzdHJ1Y3RpbmcsIGNvdW50ID0gIiA8PCBjb3VudCA8PCAiXG4iOyB9CiAgICAKICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjb3VudDsKfTsKc3RkOjpzaXplX3QgWDo6Y291bnQgPSAwOwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WD4+IHZlYzsKICAgIHZlYy5yZXNlcnZlKDIpOwogICAgCiAgICAvLyBvbmUgd2F5CiAgICB2ZWMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxYPihuZXcgWCkpOwogICAgCiAgICAvLyBhbm90aGVyIHdheQogICAgdmVjLmVtcGxhY2VfYmFjayhuZXcgWCk7CgogICAgcmV0dXJuIDA7Cn0K