SFINAE verstehen
Nach meinem Kenntnisstand bedeutet SFINAE, dass Substitutionsfehler nicht zu Kompilierungsfehlern führen, sondern lediglich den Prototyp aus der Liste der möglichen Überlastungen entfernen.
Was ich nicht verstehe: warum ist das SFINAE:
template <bool C, typename T = void> struct enable_if{};
template <typename T> struct enable_if<true, T> { typedef T type; };
Aber das ist nicht?
template <bool C> struct assert;
template <> struct assert<true>{};
Nach meinem Verständnis ist die zugrunde liegende Logik hier identisch. Diese Frage ergab sich aus den Kommentaren zudiese Antwort.