C++模板元编程(13)SFINAE规则引入

1、什么是SFINAE

从这一节开始,我们才算真正踏入模板元编程的大门,前面介绍的模板编程都是为模板元编程铺路。

我们首先来了解模板元编程的一个基本规则:SFINAE,它是Substitution Failure Is Not An Error的缩写,直接翻译就是替换失败不是一个错误

这条规则应用于函数模板重载决议时,如果模板参数展开(用户显示指定或者自动推导得到)失败,编译器并不会报错,而是从重载函数集中丢弃,也就是说会继续寻找下一个匹配函数。

这是一个使得C++模板推导规则符合程序员想象的规则。通过SFINAE,我们能够使得模板匹配更为“精确”,即 使得一些模板函数、模板类在实例化时使用特殊的模板版本,而另外一些则使用通用的版本,这样就大大增加了模板设计使用上的灵活性。

来看一个最基本的例子:

template <typename T

猜你喜欢

转载自blog.csdn.net/HandsomeHong/article/details/131503548