В идеальной пересылке std::forward используется для преобразования названных ссылок rvalue t1 и t2 в неназванные ссылки rvalue. Для чего это нужно? Как это повлияет на вызываемую функцию inner, если оставить t1 и t2 как lvalues?
template <typename T1, typename T2>
void outer(T1&& t1, T2&& t2) 
{
    inner(std::forward<T1>(t1), std::forward<T2>(t2));
}

