#include <iostream>
template <typename T>
class A
{
public:
void func(T&&)//accept rvalue
{
std::cout<<"in rvalue\n";
}
void func(T&)//accept lvalue
{
std::cout<<"in lvalue\n";
}
};
int main()
{
A<double> a;
double n = 3;
a.func(n);
a.func(5.);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIEEKewpwdWJsaWM6CiAgICB2b2lkIGZ1bmMoVCYmKS8vYWNjZXB0IHJ2YWx1ZQogICAgewogICAgICAgIHN0ZDo6Y291dDw8ImluIHJ2YWx1ZVxuIjsKICAgIH0KICAgIHZvaWQgZnVuYyhUJikvL2FjY2VwdCBsdmFsdWUKICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PCJpbiBsdmFsdWVcbiI7CiAgICB9Cn07CgppbnQgbWFpbigpIAp7ICAgIAogICAgQTxkb3VibGU+IGE7CiAgICBkb3VibGUgbiA9IDM7CiAgICBhLmZ1bmMobik7CiAgICBhLmZ1bmMoNS4pOwp9