Ответ 1
Вытеснение легче понять с помощью векторов. my_vector.emplace_back(1, 2, 3)
- это в основном эффективный ярлык для my_vector.push_back(some_type(1, 2, 3))
. Вместо того, чтобы копировать объект на месте, любой конструктор теперь можно использовать для построения на месте, тем самым сохраняя создание, копирование (или перемещение) и уничтожение временного объекта. Внедрение происходит от совершенной пересылки.
std::move(expression)
- это в основном приведение к xvalue, которое эффективно позволяет привязать все выражение к ссылке rvalue. Вы обычно делаете это, чтобы включить кражи ресурсов из именованных объектов, которые вас больше не интересуют, потому что они скоро будут уничтожены.