Chapter 7. Templates(模板)和 Generic Programming(泛型编程)
作者:Scott Meyers
译者:fatalerror99 (iTePub's Nirvana)
发布:http://blog.csdn.net/fatalerror99/
C++ templates(C++ 模板)的最初动机是直截了当的:使得创建类似 vector,list 和 map 这样的 type-safe containers(类型安全的容器)成为可能。然而,越多的人使用模板工作,他们发现他们能使用模板做的事情的种类就越多。containers(容器)确实不错,但是 generic programming(泛型编程)——写出不受所操作的 objects(对象)的 types(类型)的约束的代码的能力——更加不错。像 for_each,find 和 merge 这样的 STL algorithms(STL 算法)就是这种编程的范例。最终,人们发现 C++ template mechanism(C++ 模板机制)是 itself Turing-complete(自身图灵完备)的:它能用于计算任何可计算的值。这样就引出了 template metaprogramming(模板元编程):在 C++ 编译器中执行,而当编译完成时停止运行的程序的创造性成果。一段时间以来,containers(容器)仅仅是 C++ template pie(C++ 模板派)的一小部分。然而,无论模板的应用如何广泛,一套核心的思想成为所有 template-based programming(基于模板的编程)的基础。这些思想就是本章的焦点。
本章不会使你成为一个专家级模板程序员,但会使你成为一个更好的模板程序员。它也会给你一些你需要的信息,以使你关于 template-programming(模板编程)的知识范围扩展到你希望的宽度。
本章包括以下内容,陆续发布:
Item 41: Understand implicit interfaces and compile-time polymorphismItem 42: Understand the two meanings of typenameItem 43: Know how to access names in templatized base classesItem 44: Factor parameter-independent code out of templatesItem 45: Use member function templates to accept "all compatible types."Item 46: Define non-member functions inside templates when type conversions are desiredItem 47: Use traits classes for information about typesItem 48: Be aware of template metaprogramming