在提供的 C 程式碼中,模板函數 cal_size 列印陣列參考參數的大小。有趣的是模板參數 N 如何自動反映傳遞數組的長度。
N 不是一個初始化變數;它是一個編譯時常數。透過稱為模板參數推導的過程,T 和 N 都是從傳遞給模板函數的參數推斷出來的。
考慮以下對 cal_size 的呼叫:
void cal_size_int_6(int (&a)[6]) { std::cout << "size of array is: " << 6 << std::endl; }
void cal_size_int_1(int (&a)[1]) { std::cout << "size of array is: " << 1 << std::endl; }
本質上是 cal_size 範本轉換為具有 N 和 T 硬編碼值的單獨專用函數。 main 函數等效於:
int main() { cal_size_int_6(a); cal_size_int_1(b); }
總之,模板參數推導使模板能夠從參數類型推導出數組大小。底層機制涉及為每個獨特的參數類型組合產生專門的函數,每個函數都有自己靜態確定的 N 和 T 值。
以上是C 中模板參數推導如何決定陣列大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!