如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
C++模板元编程技术与应用动机目录历史导入范例导入范例导入范例主要思想静态语言设施静态语言设施静态语言设施可以使用模板元编程实现与运行期C++所对应的程序流程控制结构。控制结构控制结构控制结构控制结构类似地,可以分别给出更符合直觉的、结构性更好的For、While、Do-While实现。可以使用嵌套模板实现复杂的编译期数据结构(编译期容器),其中可以容纳整数和类型。考察两个例子:一个序列,为Loki库中的Typelist;一个是二叉树(或树的二叉树表示)结构。数据结构数据结构数据结构数据结构由于模板元编程最先是因为数值计算而被发现的,因此早期的研究工作主要集中于数值计算方面,先锋是ToddVeldhuizen和Blitz++库。元编程在该领域最早的应用是实现“循环开解(UnrollLoop)”。其他库(例如MTL、POOMA等)也采用了这种技术。数值计算数值计算长期以来,科学计算领域一直是Fortran的天下,采用运行期C++实现的算法太慢而无法适应数值计算的要求,利用元编程、表达式模板以及更好的编译器、优化器,现代C++也可以很好地满足数值计算的要求。实践证明,对于现代C++编程而言,元编程最大的用场本并不在于编译期数值计算,而是用于类型计算(typecomputation)(及相关领域)。通过类型参数、模板参数、typedef、枚举(或静态整型常量)以及内嵌类(模板)成员等,借助于灵活的类模板特化能力,模板元编程在类型计算方面可以释放出极大的能量。类型计算前述的“循环开解”实际上就是一种代码生成机制,但模板元编程代码生成机制的作用并不局限于数值计算领域。template<class,class>structScatterHierarchyTag;template<classTList,template<class>classUnit>structGenScatterHierarchy;//见下页……代码生成代码生成代码生成代码生成可以利用元编程技术实现编译期断言和编译期约束。断言和契约断言和契约断言和契约断言和契约库库库DSELDSELDSEL结语结语资源资源资源资源TheEnd