Mengapa Pengkompil Tidak Boleh Menolak Parameter Jenis Templat daripada Argumen Fungsi Lalai?
Walaupun andaian yang kelihatan logik, pengkompil C tidak boleh membuat kesimpulan templat secara automatik taip parameter daripada argumen fungsi lalai. Ini berlaku dalam kedua-dua C 03 dan C 11, atas sebab yang berbeza.
Dalam C 03, ketidakupayaan pengkompil berpunca daripada spesifikasi bahasa eksplisit (§14.8.2/17): "Parameter jenis templat tidak boleh disimpulkan daripada jenis argumen lalai fungsi."
Dalam C 11, walaupun mungkin untuk menentukan argumen templat lalai, ia mesti disediakan secara eksplisit. Argumen fungsi lalai itu sendiri tetap tidak boleh digunakan untuk potongan hujah templat:
<code class="cpp">void bar(int a, T b = 0.0f) { } // C++11</code>
Piawaian C 11 (14.8.2.5/5) mentakrifkan konteks bukan deduksi, yang termasuk:
Akibatnya, peruntukan eksplisit argumen templat lalai selalunya diperlukan untuk mengelakkan ralat penyusunan.
Atas ialah kandungan terperinci Mengapa Pengkompil C Tidak Dapat Menyimpulkan Parameter Jenis Templat daripada Argumen Fungsi Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!