#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;
}
