Use emplace_back for std::unique_ptrs and shared_ptrs rather than push_back