Universal references are useful when you want to move the argument if it is an rvalue and copy it if it is a "normal" lvalue reference. To accomplish this, std::forward is often used. To do the same without forwarding reference would require two separate overloads.