据我所知,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>{};
据我理解,这里的基本逻辑是相同的。这个问题来自于对这个答案的评论。
enable_if
是 SFINAE,这是错误的吗? - nikolasenable_if
模板是在其他上下文中触发 SFINAE 的已经确立的方式。但它本身只是一个类模板。 - jrok