它是泛型型別是指定關鍵字class或關鍵字typename在模板引數列表中沒有差異(他們是100%個同義詞在模板宣告)。
在上面的**中,宣布一些形式(在方括號中的模板引數的泛型)允許一些形式被用在函式定義的任何地方,就像任何其他型別;它可以作為引數型別,返回型別,或宣告該型別的新變數。在所有的情況下,它代表了乙個泛型型別將確定在矩模板例項化。
例項化乙個模板應用該模板使用特定型別或值的模板引數建立乙個函式。這是通過呼叫函式模板,具有相同的語法呼叫乙個普通的功能,但指定模板引數括在尖括號:
123
4int sum (int a, int b)
在此情況下,我們用t為模板形參的名字,而不是一些形式。它沒有差別,和t是乙個泛型型別比較常見的模板引數名稱。
在上面的例子中,我們使用函式模板的總和的兩倍。用int型別的引數的第一時間,並與雙變數的二個型別。編譯器例項化並稱為每一次函式的適當版本。
注意如何還用來宣告的區域性變數的型別中的總和(通用):
模板非型別形參
今天看c primer看到16.4.2節內容,非型別形參的模板實參 自己突發奇想非型別形參是否支援型別轉換,於是鍵入double型資料,編譯器提示模板形參錯誤 vs2010,error 表示式必須包含整數或列舉型別 可見不僅不支援型別轉換,更不能允許形參為整型與列舉型別之外的型別。不見黃河不死心,於...
模板非型別形參
今天看c primer看到16.4.2節內容,非型別形參的模板實參 自己突發奇想非型別形參是否支援型別轉換,於是鍵入double型資料,編譯器提示模板形參錯誤 vs2010,error 表示式必須包含整數或列舉型別 可見不僅不支援型別轉換,更不能允許形參為整型與列舉型別之外的型別。不見黃河不死心,於...
非型別形參的模板實參
模板形參不必都是型別。在呼叫函式時非型別形參將用值代替,值的型別在模板列表中指定。例如,下面的函式模板宣告了array init是乙個含有乙個型別模板形參和乙個非型別模板形參的函式模板。函式本身接受乙個形參,該形參是陣列的引用。模板非型別形參是模板定義內部的常量值,在需要常量表示式的時候,可使用非型...