если кратко, то да
Т.е если шаблонная функция принимает по универсальной ссылке, то аргумент будет lvalue?
да, всегда. Именно для этого нужен std::forward, чтобы скастовать обратно к rvalue, если на входе был rvalue
параметр функции это всегда lvalue. а вот его тип определяется по правилам. например, там участвует reference collapsing
Пойду, почитаю ещё пару часов Скотта Майерса
[] (int&& a) { return a; } // a is lvalue expression of type int&&
Обсуждают сегодня