#include <functional>
using namespace std;
template<typename T>
auto foo(T a)
-> typename enable_if<is_integral<T>::value, T>::type
{
return a;
}
template<typename T>
auto foo(T a)
-> typename enable_if<is_floating_point<T>::value, T>::type
{
return a;
}
int main()
{
foo(5);
foo(3.4);
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmF1dG8gZm9vKFQgYSkKICAgIC0+IHR5cGVuYW1lIGVuYWJsZV9pZjxpc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCnsKICAgIHJldHVybiBhOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgphdXRvIGZvbyhUIGEpCiAgICAtPiB0eXBlbmFtZSBlbmFibGVfaWY8aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQp7CiAgICByZXR1cm4gYTsKfQoKCmludCBtYWluKCkKewogICAgZm9vKDUpOwogICAgZm9vKDMuNCk7CgogICAgcmV0dXJuIDA7Cn0=