首頁 >後端開發 >C++ >C 模板參數推導如何決定函數模板中的陣列大小?

C 模板參數推導如何決定函數模板中的陣列大小?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-30 15:22:12649瀏覽

How Does C   Template Argument Deduction Determine Array Sizes in Function Templates?

了解函數範本中的範本參數推導

考慮以下程式碼,其中函數範本 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn