I am trying to understand how lvalues bind to rvalue references. Consider this code:
#include template void f(T&&
Since T is a template argument, T&& becomes a forwarding-reference. Due to reference collapsing rules, f(T& &&) becomes f(T&) for lvalues and f(T &&) becomes f(T&&) for rvalues.
T
T&&
f(T& &&)
f(T&)
f(T &&)
f(T&&)