#include <iostream>
template <typename T>
void foo(const T & lvalue)
{
std::cout << "lvalue" << std::endl;
}
template <typename T>
void foo(T&& rvalue)
{
std::cout << "rvalue" << std::endl;
}
int main()
{
foo(1);
int i = 2;
foo(i);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgZm9vKGNvbnN0IFQgJiBsdmFsdWUpCnsKCXN0ZDo6Y291dCA8PCAibHZhbHVlIiA8PCBzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGZvbyhUJiYgcnZhbHVlKQp7CglzdGQ6OmNvdXQgPDwgInJ2YWx1ZSIgPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKCWZvbygxKTsKCWludCBpID0gMjsKCWZvbyhpKTsKfQ==