#include <iostream>
#include <string>
template <typename T>
std::string the_type_helper(T) {
return "not a string";
}
template <>
std::string the_type_helper<std::string>(std::string a_variable) {
if (a_variable == "1") {
return "a string containing 1";
} else {
return "just a string";
}
}
template <typename T>
std::string the_type(T a_variable) {
std::string r_string;
r_string = the_type_helper<T>(a_variable);
return r_string;
}
int main()
{
int i = 1;
std::cout << the_type(i) << std::endl;
char c[] = "121345";
std::cout << the_type(c) << std::endl;
std::string s = "121345";
std::cout << the_type(s) << std::endl;
s = "1";
std::cout << the_type(s) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0ZDo6c3RyaW5nIHRoZV90eXBlX2hlbHBlcihUKSB7CglyZXR1cm4gIm5vdCBhIHN0cmluZyI7Cn0KCnRlbXBsYXRlIDw+CnN0ZDo6c3RyaW5nIHRoZV90eXBlX2hlbHBlcjxzdGQ6OnN0cmluZz4oc3RkOjpzdHJpbmcgYV92YXJpYWJsZSkgewoJaWYgKGFfdmFyaWFibGUgPT0gIjEiKSB7CgkJcmV0dXJuICJhIHN0cmluZyBjb250YWluaW5nIDEiOwoJfSBlbHNlIHsKCQlyZXR1cm4gImp1c3QgYSBzdHJpbmciOwoJfQp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RkOjpzdHJpbmcgdGhlX3R5cGUoVCBhX3ZhcmlhYmxlKSB7CglzdGQ6OnN0cmluZyByX3N0cmluZzsKCglyX3N0cmluZyA9IHRoZV90eXBlX2hlbHBlcjxUPihhX3ZhcmlhYmxlKTsKCglyZXR1cm4gcl9zdHJpbmc7Cn0KCmludCBtYWluKCkKewoJaW50IGkgPSAxOwoJc3RkOjpjb3V0IDw8IHRoZV90eXBlKGkpIDw8IHN0ZDo6ZW5kbDsKCgljaGFyIGNbXSA9ICIxMjEzNDUiOwoJc3RkOjpjb3V0IDw8IHRoZV90eXBlKGMpIDw8IHN0ZDo6ZW5kbDsKCglzdGQ6OnN0cmluZyBzID0gIjEyMTM0NSI7CglzdGQ6OmNvdXQgPDwgdGhlX3R5cGUocykgPDwgc3RkOjplbmRsOwoKCXMgPSAiMSI7CglzdGQ6OmNvdXQgPDwgdGhlX3R5cGUocykgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9