Идеальная пересылка - это здорово и все. Но что мне делать, если я хочу не совершенно вперед и вместо этого просто перегрузить что-то, что происходит с шаблонным типом?
template<typename T> void foo(T&& ref);
template<typename T> void foo(const T& ref);
Не будет работать, потому что первая перегрузка вызовет идеальную пересылку. Мне бы очень хотелось, чтобы поведение было таким же, как если бы первым была нормальная ссылка lvalue - где T всегда будет типом значения.