A C++ compiler that I will not name lets you take the address of a literal, int *p = &42;
Clearly 42 is an r-value and most compilers refuse to do so.
W
Tongue slightly (nut by no means totally) in cheek:
I'd say that in C++ application code taking the address of an integer whether lvalue or rvalue is almost always a mistake. Even using integers, for doing anything much more than controlling loops or counting is probably a design error, and if you need to pass an integer to a function which might change it, use a reference.