- #include <iostream> 
- #include <typeinfo> 
-   
- template<class T> 
- struct printer {     
-     friend std::ostream &operator<<(std::ostream &output, const printer&) { 
-         return output << typeid(int).name(); 
-     } 
- }; 
-   
- template<class T> 
- struct printer<T&> {     
-     friend std::ostream &operator<<(std::ostream &output, const printer&) { 
-         return output << typeid(int).name() << "&"; 
-     } 
- }; 
-   
- template<class T> 
- struct printer<T&&> {     
-     friend std::ostream &operator<<(std::ostream &output, const printer&) { 
-         return output << typeid(int).name() << "&&"; 
-     } 
- }; 
-   
- int main(int argc,char *argv[]) 
- { 
- 	std::cout << printer<int>() << std::endl; 
- 	std::cout << printer<int&>() << std::endl; 
- 	std::cout << printer<int&&>() << std::endl; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgcHJpbnRlciB7ICAgIAogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm91dHB1dCwgY29uc3QgcHJpbnRlciYpIHsKICAgICAgICByZXR1cm4gb3V0cHV0IDw8IHR5cGVpZChpbnQpLm5hbWUoKTsKICAgIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CnN0cnVjdCBwcmludGVyPFQmPiB7ICAgIAogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm91dHB1dCwgY29uc3QgcHJpbnRlciYpIHsKICAgICAgICByZXR1cm4gb3V0cHV0IDw8IHR5cGVpZChpbnQpLm5hbWUoKSA8PCAiJiI7CiAgICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgcHJpbnRlcjxUJiY+IHsgICAgCiAgICBmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3V0cHV0LCBjb25zdCBwcmludGVyJikgewogICAgICAgIHJldHVybiBvdXRwdXQgPDwgdHlwZWlkKGludCkubmFtZSgpIDw8ICImJiI7CiAgICB9Cn07CgppbnQgbWFpbihpbnQgYXJnYyxjaGFyICphcmd2W10pCnsKCXN0ZDo6Y291dCA8PCBwcmludGVyPGludD4oKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgcHJpbnRlcjxpbnQmPigpIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCBwcmludGVyPGludCYmPigpIDw8IHN0ZDo6ZW5kbDsKfQo=