#include <string>
#include <iostream>
using namespace std;
template<typename T>
T foo() {
T t = {};
return t;
}
template <>
string foo<string>() {
return "foo";
}
template <>
int foo<int>() {
return 177;
}
int main() {
cout << "foo<double>=" << foo<double>() << endl;
cout << "foo<string>=" << foo<string>() << endl;
cout << "foo<int>=" << foo<int>() << endl;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBmb28oKSB7CiAgICBUIHQgPSB7fTsKICAgIHJldHVybiB0Owp9Cgp0ZW1wbGF0ZSA8PgpzdHJpbmcgZm9vPHN0cmluZz4oKSB7CglyZXR1cm4gImZvbyI7Cn0KCnRlbXBsYXRlIDw+CmludCBmb288aW50PigpIHsKCXJldHVybiAxNzc7Cn0KCmludCBtYWluKCkgewoJY291dCA8PCAiZm9vPGRvdWJsZT49IiA8PCBmb288ZG91YmxlPigpIDw8IGVuZGw7Cgljb3V0IDw8ICJmb288c3RyaW5nPj0iIDw8IGZvbzxzdHJpbmc+KCkgPDwgZW5kbDsKCWNvdXQgPDwgImZvbzxpbnQ+PSIgPDwgZm9vPGludD4oKSA8PCBlbmRsOwp9