#include <iostream>
struct A
{
};

void f(A & _a)
{
	std::cout << "lvalue called" << std::endl;
}

void f(A && _a)
{
	std::cout << "rvalue called" << std::endl;
}

template <typename T>
class TD;
int main()
{
	A&& a = A();

	//TD<decltype(a)> b;         // -> A &&
	
	f(static_cast<A&&>(a));
	f(a);
	
	
	return 0;
}
