Понимание 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>{};
Насколько я понимаю, основная логика здесь идентична. Этот вопрос возник из комментариев кэтот ответ.