#include <iostream>
#include <type_traits>
template <typename T>
typename std::enable_if<std::is_integral<T>::value && std::is_signed<T>::value,
int>::type f()
{
std::cout << "signed\n";
return 42;
}
template <typename T>
typename std::enable_if<std::is_integral<T>::value && !std::is_signed<T>::value,
unsigned>::type f()
{
std::cout << "unsigned\n";
return 42;
}
int main() {
f<int>();
f<unsigned int>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUgJiYgc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlIGYoKQp7CiAgICBzdGQ6OmNvdXQgPDwgInNpZ25lZFxuIjsKICAgIHJldHVybiA0MjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlICYmICFzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkPjo6dHlwZSBmKCkKewogICAgc3RkOjpjb3V0IDw8ICJ1bnNpZ25lZFxuIjsKICAgIHJldHVybiA0MjsKfQoKCmludCBtYWluKCkgewoJZjxpbnQ+KCk7CglmPHVuc2lnbmVkIGludD4oKTsKfQ==