Dalam C 17, Potongan Argumen Templat Kelas (CTAD) membenarkan pemotongan hujah templat berdasarkan hujah yang diserahkan kepada fungsi atau pembina. Walau bagaimanapun, proses ini pada masa ini memerlukan sama ada semua atau tiada hujah dinyatakan.
Persoalan timbul jika mungkin untuk menentukan sebahagian hujah templat dan selebihnya disimpulkan. Contohnya:
<code class="cpp">Base<V = bool> val1(1, 4.); // U & V deduced --> Base<int, double, bool> Base<T = bool, T =int> val2(5.); // V deduced --> Base<bool, int, double></code>
Walau bagaimanapun, cubaan menggunakan templat alias untuk mencapai ini, seperti:
<code class="cpp">template<class T, class U> using Base2 = Base<T, U, double>; void func() { NewBase2 val(1, 2); }</code>
menghasilkan ralat penyusunan.
Pada masa ini, CTAD tidak menyokong potongan separa. Kertas P1021R0, yang mencadangkan ciri ini, belum diterima. Walau bagaimanapun, C 20 mungkin termasuk sokongan untuk templat alias (P1814) dan agregat (P1816), yang boleh menyediakan penyelesaian.
Atas ialah kandungan terperinci ## Bolehkah C 17 Mencapai Potongan Hujah Templat Kelas Separa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!