By Herb Sutter, Andrei Alexandrescu 著
树人译
模板和泛型
64. 明智地混合使用静态和动态多态。
比单纯的部分的总和更多:静态和动态多态是互补的。理解它们的权衡标准,在各自最好的情况下使用它们,并且混合使用它们来达到两全其美。
65. 有意地和显式地定制模板。
有意图要优于偶然性,显式要优于隐式:在编写模板的时候,要有意识和正确地提供定制点,而且要清楚地说明它们。在使用模板的时候,要知道模板希望你如何定制它来为你的类型所使用,并恰当地定制模板。
66. 不要特化函数模板。
模板特化只有在它能正确地实行时,它才是有益的:在扩展其他某个人的函数模板(包括:std::swap)的时候,尽量避免去特化它;作为替换,我们可以写一个函数模板的重载函数,并把它放到这个重载函数所用于的类型所在的名字空间中去。(参见:Item57)在你编写自己的函数模板的时候,避免鼓励函数模板自身的直接特化。
67. 不要盲目地编写非泛型代码。
依赖于抽象,而不是细节:使用最最泛型化和抽象的方法来实现功能的一小块。