Ответ 1

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

Почему это полезно? Ну, это означает, что шаблон функции может передавать свои аргументы до другой функции, сохраняя при этом значение lvalue/rvalue аргументов функции, используя std:: forward. Это называется "совершенной переадресацией", избегает чрезмерного копирования и позволяет автору шаблона писать несколько перегрузок для ссылок lvalue и rvalue.

Ответ 2

Цитата Объявление сеанса: Приключения в Perfect Forwarding:

Совершенствование пересылки - это важная технология С++ 0x, построенная поверх rvalue-ссылки. Это позволяет автоматически перемещать семантику применяется, даже когда источник и место назначения движения разделенных промежуточными вызовами функций. Общие примеры включают конструкторы и функции setter, которые передают аргументы, которые они получают к членам данных класса, которые они инициализируют или устанавливают, как а также стандартные библиотечные функции, такие как make_shared, которые "perfect-forwards" его аргументы конструктору класса любого объект, который должен быть создан shared_ptr, должен указывать на.