Предполагая, что следующие фрагменты компилируются и запускаются.
Я не вижу очевидной разницы между этим:
v.push_back(std::move(a))
и это:
v.emplace_back(std::move(a))
Похоже, оба избегают создания копии. Если что, я всегда могу написать:
class A { ... };
void func() {
std::vector v;
A a;
FillA(&a);
v.push_back(std::move(a)) // I don't see any benefit using v.emplace_back(std::move(a))
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... place-back