將進行型別引數代替作為一種方便的方法,這意味著產生了一種支援編譯時程式設計的機制,這樣的程式稱為模板元程式(template metaprogram)(因為正在"為乙個程式進行程式設計"),事實證明可以用它做很多事情。實際上,模板元程式設計就是完全的圖靈機(turing complete),因為它支援選擇(if-else)和 迴圈(通過遞迴)。從理論上講,可以用它執行任何計算。下面看幾個例子。
注:圖靈機: 支援選擇和迴圈,並具有使用變數隨機數的能力,圖靈機被認為具有表達任意演算法的能力。
#include using namespace std;
templatestruct factorial ;};
template<> struct factorial<0>;};
void main();};
template<> struct fib<0>;};
template<> struct fib<1>;};
void main()
{ cout<::val<::val<
模板元程式設計
類是對物件的抽象,類模板則是對類的抽象 抽象是為提供更強的表達能力,還有統一 一致性 在更高的抽象觀點上來看,型別和值是同一種東西,同樣可以計算。模板可以看作是一種更智慧型的巨集,為了在使用時的一致性,使用了許多的技巧。現代的程式語言,要麼為了效率,把以前執行時的工作拿到編譯期。要麼為了更大的自由度...
模板元程式設計
模板元程式設計 遊戲開發中實現遞迴,使得編譯時期長,執行速度快。詳細介紹 include 模板元吧執行時消耗的時間,在編譯期間優化 templatestruct data template struct data 1 template struct data 2 1 1 2 3 5 7 int ge...
模板元程式設計 二
c 模板元程式設計是讓編譯器提前完成一些執行期的工作,這樣提高了程式的執行期速度。由編譯器完成,那些只能在編譯器做工作,可是在編譯器能使用的東西很少。模板機制是c 除了繼承之外的 重用的一項關鍵的機制,它在編譯器完成模板的例項化的特性滿足了能在編譯期做工作的基本條件。模板的特化和遞迴是元程式設計中的...