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

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

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


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

C++ 模板类型推导是复杂系统设计的一大成功,它使得程序员可以忽略类型推导的复杂过程,简单地向模板函数传递参数即可完成预期功能。对于大部分 C++ 程序员而言,模板类型推导是难以简单阐明、复杂的系统。本文是笔者阅读 Effective Modern C++ Item 1 时的笔记,旨在加强对模板类型推导工作过程的理解。

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

在使用容器的时候,我们可能需要求容器中最小的元素,即需要min()操作。我们可以通过遍历栈的存储结构来找到最小的元素,但那样将需要线性级别的执行时间。有没有一种方法能够使得该操作能在常数时间内完成呢?

    Page 1 of 6