模板非型別形參

2021-05-27 10:36:10 字數 595 閱讀 7342

今天看c++primer看到16.4.2節內容,非型別形參的模板實參

自己突發奇想非型別形參是否支援型別轉換,於是鍵入double型資料,編譯器提示模板形參錯誤(vs2010,error:表示式必須包含整數或列舉型別).

可見不僅不支援型別轉換,更不能允許形參為整型與列舉型別之外的型別。

不見黃河不死心,於是將模板形參修改為double型來測試,發現在使用模板型別時顯示宣告的形參值還是必須鍵入整型,且編譯不能通過。

咦,列舉?於是想想為列舉成員提供double型資料再設定為模板的形參是什麼情況呢,想到就做。

結果在初始化列舉型別成員的時候出錯,error:表示式必須為整型常量表示式

翻書到列舉這一章c++primer54頁:用來初始化列舉成員的值必須是乙個常量表示式。double型資料就不是常量表示式?

剛想到這兒馬上看見後面一句話:常量表示式是編譯器在編譯時就能夠計算出結果的整型表示式。

噢,原來如此,暫且自己這樣理解:常量表示式就是整型表示式,整型表示式在編譯時就能夠計算出結果。

這句話的意思不知道是不是意味著double型或其他非整型應該是在程式執行時才能計算出結果。。?

這是乙個初學者的理解,如有錯誤歡迎指出..

模板非型別形參

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

非型別形參的模板實參

模板形參不必都是型別。在呼叫函式時非型別形參將用值代替,值的型別在模板列表中指定。例如,下面的函式模板宣告了array init是乙個含有乙個型別模板形參和乙個非型別模板形參的函式模板。函式本身接受乙個形參,該形參是陣列的引用。模板非型別形參是模板定義內部的常量值,在需要常量表示式的時候,可使用非型...

模板非型別形參的詳細闡述

關於模板的非型別形參,網上有很多內容,c primer只有大概一頁的闡述,但是都不夠清晰詳細。下面我盡可能從自己的角度去給大家描述一下非型別形參的相關細節。如果想進一步理解非型別形參以及模板內容可以閱讀c template這本書,在4.1節,8.3.3節,13.2節都有相關解釋。模板除了定義型別引數...