Dalam kod C yang disediakan, templat fungsi bernama cal_size diisytiharkan untuk menerima tatasusunan sebagai hujahnya. Templat fungsi menyimpulkan saiz tatasusunan daripada jenis hujah dan mencetaknya.
Timbul persoalan: bagaimana parameter templat N secara automatik dimulakan kepada saiz tatasusunan yang betul tanpa menyatakannya secara eksplisit dalam fungsi call?
Kunci untuk memahami tingkah laku ini terletak pada proses potongan hujah templat. Apabila fungsi templat dipanggil, pengkompil menggunakan jenis argumen sebenar untuk menyimpulkan nilai parameter templat.
Dalam kes cal_size, jenis argumen ialah tatasusunan elemen jenis T dengan saiz yang ditentukan N. Pengkompil menyimpulkan T daripada jenis elemen tatasusunan, dan N daripada saiz tatasusunan.
Apabila hujah a dihantar ke fungsi, pengkompil menyimpulkan T sebagai int dan N sebagai 6. Begitu juga, apabila b diluluskan, T ialah int dan N ialah 1.
Berdasarkan nilai deduksi T dan N, pengkompil menjana versi templat fungsi yang berasingan dan khusus. Untuk setiap panggilan, fungsi khusus dicipta dengan maklumat jenis dan saiz khusus tatasusunan argumen.
Dalam kes khusus ini, dua fungsi khusus dijana:
Fungsi utama pada dasarnya diterjemahkan kepada memanggil fungsi khusus ini.
Atas ialah kandungan terperinci Bagaimanakah C Menyimpulkan Saiz Tatasusunan dalam Templat Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!