1. 程式人生 > >C++ Template (二):初步超程式設計

C++ Template (二):初步超程式設計

前言

  在上一篇部落格C++ Template (一):模板基礎中,簡單介紹了模板的定義,例項化,特化以及引數包的使用,在一些簡單的場景中,已經可以通過這些知識去大展手腳了。但是想真正發揮Template的威力,還有很長的路要走。在本篇博文中會介紹Template為C++新增的平行宇宙 模板超程式設計 Template metapromming (後文簡稱TMP)。首先要說明TMP是圖靈完備的,這也就是為什麼說TMP是C++的平行宇宙,根據TMP的特點,Template成功的在指令式程式設計語言(CPP)中添加了一個門函數語言程式設計語言。Template的威力也在TMP中得到了極致的展現。限於博主能力,在本篇博文中只能初步涉獵TMP

冰山一角。

一、超程式設計

  超程式設計是英文metaprogramming,是指 “a program about a program” , 我一般理解成“生成程式的程式”,Template一開始的引入並不是為超程式設計準備的,還是為C++提供一種泛型的能力,提高複用的能力,而只是恰好發現其具有超程式設計的能力,再隨後C++迭代中,C++標準委員也有心在這方面添磚加瓦,使得TMP在C++新的特性引入後更加靈活和具有威力。