I don't think that's true. rvalue references can only bind to rvalues.
Here's a complete program. foo(i) won't compile bacause i is not an rvalue. bar(i) will compile, and foo(1) will compile.
#include <iostream>
using namespace std;
int foo(int&& i){ return i; }
template<class T> T bar(T&& i){ return i; }
int main() { int i=0; cout << foo(i) << endl;
return 0;
}edit: I am replying humbly. C++ is a complex language and I might very well be wrong.