#include <iostream>
#include <type_traits>
template<typename T>
void equal(const T lhs, const T rhs, std::true_type) noexcept {
std::cout << "integer overload!!\xa";
}
template<typename T>
void equal(const T lhs, const T rhs, std::false_type) noexcept {
std::cout << "non integer overload!!\xa";
}
template<typename T>
void equal(const T lhs, const T rhs) noexcept {
equal(lhs, rhs,
typename std::conditional<
std::is_integral<T>::value,
std::true_type,
std::false_type
>::type());
}
int main()
{
equal(10.f,20.f);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHZvaWQgZXF1YWwoY29uc3QgVCBsaHMsIGNvbnN0IFQgcmhzLCBzdGQ6OnRydWVfdHlwZSkgbm9leGNlcHQgewogICAgICAgIHN0ZDo6Y291dCA8PCAiaW50ZWdlciBvdmVybG9hZCEhXHhhIjsKICAgIH0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICB2b2lkIGVxdWFsKGNvbnN0IFQgbGhzLCBjb25zdCBUIHJocywgc3RkOjpmYWxzZV90eXBlKSBub2V4Y2VwdCB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJub24gaW50ZWdlciBvdmVybG9hZCEhXHhhIjsKICAgIH0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICB2b2lkIGVxdWFsKGNvbnN0IFQgbGhzLCBjb25zdCBUIHJocykgIG5vZXhjZXB0IHsKICAgICAgICBlcXVhbChsaHMsIHJocywgCiAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp0cnVlX3R5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmFsc2VfdHlwZQogICAgICAgICAgICAgID46OnR5cGUoKSk7CiAgICB9CgppbnQgbWFpbigpCnsKICAgIGVxdWFsKDEwLmYsMjAuZik7Cn0=