了解函數範本中的範本參數推導
考慮以下程式碼,其中函數範本 cal_size用於計算和列印陣列的大小:
當程式執行時,它會列印正確的大小兩個陣列:
那麼,範本函數cal_size 如何自動推導出傳遞數組的大小,即使大小沒有作為參數明確傳遞?
答案在於C 中模板參數推導的概念。它的工作原理如下:
在編譯期間,編譯器會根據傳遞給模板函數的參數的實際類型執行模板參數推導,以確定 T 的類型和 N 的值。在這種情況下,當使用參數a 呼叫cal_size 時,編譯器將T 推斷為int,將N 推斷為6,從而在編譯時創建一個專門的函數cal_size_int_6:
同樣,對於參數b,編譯器將T 推導為int,將N 推導為1,從而產生特化cal_size_int_1:
因此,原始 cal_size 模板有效地創建了兩個單獨的函數專業化,每個函數都有自己的硬編碼 T 和 N 值。此程序可確保每次呼叫 cal_size 時列印正確的陣列大小。
以上是C 模板參數推導如何決定函數模板中的陣列大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!