本章我们来了解“替换失败不是错误”(SFINAE),在所使用的语言特性方面属于较为复杂。因此,它往往引起C++开发者过多的关注。这个特性中似乎有什么东西迎合了典型C++开发者的思维方式 —— 普通人认为,如果东西没坏,就不要去动它;而开发者,尤其是使用C++编写程序的开发者,则倾向于认为,如果程序没坏,说明你还没有将其潜力发挥到极致。我们姑且说SFINAE潜力巨大吧。
本章我们将涵盖以下主题:
什么是函数重载和重载解析?
什么是类型推导和替换?
什么是SFINAE,为什么C++需要它?
如何利用SFINAE编写出极其复杂且有时非常有用的程序?