#include <iostream>
#include <type_traits>
template<typename T>
void f();
template<>
void f<int>() {
std::cout << "int\n";
}
template<>
void f<unsigned>() {
std::cout << "unsigned\n";
}
template<>
void f<long>() {
std::cout << "long\n";
}
int main() {
f<int>();
f<unsigned>();
f<long>();
f<std::common_type<int, unsigned>::type>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIGYoKTsKCnRlbXBsYXRlPD4Kdm9pZCBmPGludD4oKSB7CglzdGQ6OmNvdXQgPDwgImludFxuIjsKfQp0ZW1wbGF0ZTw+CnZvaWQgZjx1bnNpZ25lZD4oKSB7CglzdGQ6OmNvdXQgPDwgInVuc2lnbmVkXG4iOwp9CnRlbXBsYXRlPD4Kdm9pZCBmPGxvbmc+KCkgewoJc3RkOjpjb3V0IDw8ICJsb25nXG4iOwp9CgppbnQgbWFpbigpIHsKCWY8aW50PigpOwoJZjx1bnNpZ25lZD4oKTsKCWY8bG9uZz4oKTsKCWY8c3RkOjpjb21tb25fdHlwZTxpbnQsIHVuc2lnbmVkPjo6dHlwZT4oKTsKfQo=