c 模板元程式設計學習筆記(一)

2021-06-27 18:25:49 字數 979 閱讀 3304

習題 2-1.編寫乙個三元元函式replace_type,它接受乙個任意復合型別c作為其第乙個引數,並將c中出現的type x替換為y:

typedef replace_type::type t1;//int*

typedef replace_type<

int const*[10]

, int const,

, long

>::type t2; //long*[10]

typedef replace_type<

char& (*)(char&)

, char&

, long&

>::type t3; //long& (*) long&

解題思路是提供乙個主模板處理一般情況,特化模板進行型別替換。

主模板如下:

template struct replace_type

;

對指標特化的模板:

templatestruct replace_type;

對引用特化的模板:

template struct replace_type;

對陣列的模板特化:

template struct replace_type;

template struct replace_type;

template struct replace_type;

對函式的特化:

template struct replace_type;

template struct replace_type;

以上是乙個不完備的元函式實現。通過模板特化,我們能夠實現編譯期的型別運算,以上只是牛刀小試。

學習C 模板元程式設計(5)

這兩周學習了 c tmp 第 五 六章,是關於tmp的序列 容器 迭代器和演算法。做了不少習題,其中最有意思的 也是花了我最多時間的 習題是用tmp實現二分查詢樹 binary search tree 從第五章的一道關於二分樹的習題開始。題目給出乙個編譯期的二分樹資料結構,例如 typedef tr...

學習C 模板元程式設計(6)

接下來是第六章的一道習題,要求實現乙個 binary tree inserter,以使用mpl copy演算法從其它序列生成一棵二分查詢樹 binary search tree,即滿足以下條件的一種二分樹 左子樹所有元素小於根,右子樹所有元素大於根,且左右子樹全都是二分查詢樹 習題中給出的測試 如下...

C 之 模板元程式設計(一)

利用模板特化機制實現編譯期條件選擇結構,利用遞迴模板實現編譯期迴圈結構,模板元程式則由編譯器在編譯期解釋執行。模板是c 支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數 返回值取得任意型別。模板是一種對型別進行引數化的工具 通常有兩種形...