Я просто задал этот вопрос: std:: numeric_limits как условие
Я понимаю, где std::enable_if
будет определять возвращаемый тип метода, условно вызывающий компиляцию метода.
template<typename T>
typename std::enable_if<std::numeric_limits<T>::is_integer, void>::type foo(const T &bar) { isInt(bar); }
То, что я не понимаю, является вторым аргументом и кажущимся бессмысленным присваиванием std::enable_if
, когда он объявлен как часть инструкции шаблона, как в Rapptz answer.
template<typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0>
void foo(const T& bar) { isInt(); }