#include <functional>
#include <type_traits>
using namespace std;
template<typename T, typename = typename enable_if<is_integral<T>::value, T>::type>
T foo(T a)
{
return a;
}
template<typename T, typename = typename enable_if<is_floating_point<T>::value, void>::type>
T foo2(T a)
{
return a;
}
int main()
{
foo(5);
foo2<float>(3.4);
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgZW5hYmxlX2lmPGlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGU+ClQgZm9vKFQgYSkKewogICAgcmV0dXJuIGE7Cn0KIAp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIGVuYWJsZV9pZjxpc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIHZvaWQ+Ojp0eXBlPgpUIGZvbzIoVCBhKQp7CiAgICByZXR1cm4gYTsKfQogCiAKaW50IG1haW4oKQp7CiAgICBmb28oNSk7CiAgICBmb28yPGZsb2F0PigzLjQpOwogCiAgICByZXR1cm4gMDsKfQ==