#include <type_traits>
#include <iostream>
#include <utility>
struct X{};
template<typename T>
void
func(T&&){
std::cout << "T&&" << std::endl;
}
void
func(X const&){
std::cout << "X const&" << std::endl;
}
int
main(){
X x;
func(x);
// -> T&&
return 0;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx1dGlsaXR5PgoKc3RydWN0IFh7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQKZnVuYyhUJiYpewoJc3RkOjpjb3V0IDw8ICJUJiYiIDw8IHN0ZDo6ZW5kbDsKfQoKdm9pZApmdW5jKFggY29uc3QmKXsKCXN0ZDo6Y291dCA8PCAiWCBjb25zdCYiIDw8IHN0ZDo6ZW5kbDsKfQoKCmludAptYWluKCl7CglYIHg7CglmdW5jKHgpOwoJLy8gLT4gVCYmCgoJcmV0dXJuIDA7Cn0K