实现模板的时候,经常会发现一个问题:怎么判断类型 T 和 U 之间存在继承关系?怎么知道一个类型可以安全地转换为另一个类型?

在编译期发现这样的关系,是实现泛型程序库的一个优化关键。在泛型函数中,如果能够确切知道某个 class 实现了某个接口,我们便可以采用某个最佳算法。在编译器发现这种关系,意味着不必使用 dynamic_cast,从而避免一些运行时代价。

分派 (dispatching) 是一种特别的功能,与动态绑定的概念有相似之处:根据某些既定信息,进行功能的选择。说起分派,很多人都会记起 switch 关键字 —— switch 能够根据传递的整型值,进行执行代码的动态分派。


本文讲述如何使用模板实现静态分派。

本文讲述静态断言的实现。