14

私の知る限り、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>{};

私の理解では、根底にあるロジックはここでも同じです。この質問は、この回答へのコメントから生まれました。

4

1 に答える 1