#include <iostream>
#include <type_traits>
template<typename T>
typename std::enable_if<(std::is_integral<T>::value || std::is_floating_point<T>::value), void>::type
function(const T& value)
{
std::cout << "Only for integrals and floats" << std::endl;
}
template<typename T>
typename std::enable_if<(!std::is_integral<T>::value && !std::is_floating_point<T>::value), void>::type
function(const T& value)
{
std::cout << "For all others" << std::endl;
}
int main()
{
function(1);
function(1.0);
function('c');
function("hello");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUgfHwgc3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUpLCB2b2lkPjo6dHlwZQpmdW5jdGlvbihjb25zdCBUJiB2YWx1ZSkKewogICBzdGQ6OmNvdXQgPDwgIk9ubHkgZm9yIGludGVncmFscyBhbmQgZmxvYXRzIiA8PCBzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCghc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlKSwgdm9pZD46OnR5cGUKZnVuY3Rpb24oY29uc3QgVCYgdmFsdWUpCnsKICAgc3RkOjpjb3V0IDw8ICJGb3IgYWxsIG90aGVycyIgPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKICAgZnVuY3Rpb24oMSk7CiAgIGZ1bmN0aW9uKDEuMCk7CiAgIGZ1bmN0aW9uKCdjJyk7CiAgIGZ1bmN0aW9uKCJoZWxsbyIpOwp9