Как работает std :: enable_if?
Я только что задал этот вопрос: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 ответ.
template<typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0>
void foo(const T& bar) { isInt(); }