#include <iostream> using namespace std; int main() { int &&rfint = 10; int &l = rfint; std::cout << l << std::endl; std::cout << ++l << std::endl; std::cout << &l << std::endl; return 0; } Using the above construct, I can directly manipulate the prvalue 10 through the non-const lvalue reference l. I can even take address of the prvalue. How does this work? Is it related to extended lifetime?