В g()
t
- именованная переменная. Все именованные переменные являются lvalues. Если T
является типом шаблона, вы можете перенаправить переменную на f()
с помощью std::forward
. Это вызовет f()
с тем же типом, который был передан в g()
template
g(T&& t) { f(std::forward(t));}
Если T
не тип шаблона, а просто тип, вы можете использовать std::move
g(T&& t) { f(std:move(t)); }