sfinae专题

函数重载及SFINAE

1. C语言不支持函数重载 main.c // gcc main.cvoid f(int x, int y){}void f(double x, double y){}int main(){} 使用指令gcc main.c编译是会报错的,因为C语言是不支持函数重载的,报错信息如下: main.c:4:6: error: conflicting types for ‘f’; have ‘

模板编程中实现 SFINAE(Substitution Failure Is Not An Error)

在C++模板编程中,std::enable_if 是一个常用的工具,它依赖于 SFINAE(Substitution Failure Is Not An Error)原则来控制模板的启用或禁用。理解 std::enable_if 如何工作,可以更清楚地看到为什么 disable_if_same_or_derived 在某些情况下等同于 void 类型。 std::enable_if 的工作原理