Понимание SFINAE

Насколько я знаю, SFINAE означает, что ошибки замещения не приводят к ошибкам компиляции, а просто удаляют прототип из списка возможных перегрузок.

Что я не понимаю: зачем это СФИНАЕ

template <bool C, typename T = void> struct enable_if{};
template <typename T> struct enable_if<true, T> { typedef T type; };

Но это не так?

template <bool C> struct assert;
template <> struct assert<true>{};

Насколько я понимаю, основная логика здесь идентична. Этот вопрос возник из комментариев кэтот ответ.

Ответы на вопрос(1)

Ваш ответ на вопрос