This means that in the case of
template<class T ,
class = typename std::enable_if<std::is_integral<T>::value>::type >
he becomes
template<class T ,
class = void >
if the condition std::is_integral<T>::valueis equal true, therefore the function is allowed for the type Tand therefore is involved in overload resolution.
, , typename std::enable_if<...>::type T. (int, unsigned, long,...), ..
int -only unsigned , .
, void std::enable_if, .., . , /, , (void) , ::type.