#include<type_traits>
namespace detail
{
enum enabler {};
}
template <int overload, typename Condition>
using EnableIf = std::enable_if_t<Condition::value, detail::enabler>;
template <typename T,
EnableIf<0, std::is_same<T, int>>...>
T twice(T t) { return 2 * t; }
template <typename T,
EnableIf<0, std::is_same<T, float>>...>
T twice(T t) { return 2 * t; }
int main()
{
twice(1);
twice(1.f);
return 0;
}
I2luY2x1ZGU8dHlwZV90cmFpdHM+CgpuYW1lc3BhY2UgZGV0YWlsCnsKICAgIGVudW0gZW5hYmxlciB7fTsKfQoKdGVtcGxhdGUgPGludCBvdmVybG9hZCwgdHlwZW5hbWUgQ29uZGl0aW9uPgp1c2luZyBFbmFibGVJZiA9IHN0ZDo6ZW5hYmxlX2lmX3Q8Q29uZGl0aW9uOjp2YWx1ZSwgZGV0YWlsOjplbmFibGVyPjsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAgRW5hYmxlSWY8MCwgc3RkOjppc19zYW1lPFQsIGludD4+Li4uPgogICAgVCB0d2ljZShUIHQpIHsgcmV0dXJuIDIgKiB0OyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKICAgIEVuYWJsZUlmPDAsIHN0ZDo6aXNfc2FtZTxULCBmbG9hdD4+Li4uPgogICAgVCB0d2ljZShUIHQpIHsgcmV0dXJuIDIgKiB0OyB9CgppbnQgbWFpbigpCnsKICAgIHR3aWNlKDEpOwogICAgdHdpY2UoMS5mKTsKICAgIHJldHVybiAwOwp9