Arguments by default do not play a role in determining the uniqueness of functions. So the compiler sees that you define two functions, such as:
template <class T, class>
void fn(T t) { }
template <class T, class>
void fn(T t) { }
, , . enable_if :
template <class T, std::enable_if_t<std::is_arithmetic<T>::value, int> = 0>
void fn(T t) { }
template <class T, std::enable_if_t<!std::is_arithmetic<T>::value, int> = 0>
void fn(T t) { }
, , . SFINAE , .