非型別形參的模板實參

2021-05-23 00:05:04 字數 421 閱讀 8258

模板形參不必都是型別。在呼叫函式時非型別形參將用值代替,值的型別在模板列表中指定。例如,下面的函式模板宣告了array_init是乙個含有乙個型別模板形參和乙個非型別模板形參的函式模板。函式本身接受乙個形參,該形參是陣列的引用。

模板非型別形參是模板定義內部的常量值,在需要常量表示式的時候,可使用非型別形參,例如上述**來指定陣列的長度。當呼叫array_init時,編譯器從陣列實參計算非型別形參的值。

[注意]

[1] 非型別模板實參必須是編譯時常量表示式

[2] 對模板的非型別形參而言,求值結果相同且型別相同的表示式將認為是等價的。函式模板呼叫相同的例項

非型別引數的模板實參

類模板引數也可以是乙個非型別模板引數。例如 templateclass screen private string screen string size type cursor short height short width typedef screen 24,80 termscreen term...

模板非型別形參

今天看c primer看到16.4.2節內容,非型別形參的模板實參 自己突發奇想非型別形參是否支援型別轉換,於是鍵入double型資料,編譯器提示模板形參錯誤 vs2010,error 表示式必須包含整數或列舉型別 可見不僅不支援型別轉換,更不能允許形參為整型與列舉型別之外的型別。不見黃河不死心,於...

模板非型別形參

今天看c primer看到16.4.2節內容,非型別形參的模板實參 自己突發奇想非型別形參是否支援型別轉換,於是鍵入double型資料,編譯器提示模板形參錯誤 vs2010,error 表示式必須包含整數或列舉型別 可見不僅不支援型別轉換,更不能允許形參為整型與列舉型別之外的型別。不見黃河不死心,於...