Rumah > Artikel > pembangunan bahagian belakang > Bolehkah Anda Menentukan Secara Eksplisit Parameter Templat dalam Pembina dalam C 03?
Walaupun keupayaan untuk pembina menjadi fungsi templat, piawaian C 03 tidak menyediakan sintaks untuk menentukan parameter templat mereka secara eksplisit. Sebaliknya, pengkompil secara automatik menentukan parameter ini berdasarkan hujah yang disediakan.
Pertimbangkan contoh berikut:
struct A { template<typename T> A() {} };
Untuk membuat contoh kelas ini, anda tidak boleh menentukan parameter templat secara eksplisit. Sebaliknya, anda mesti bergantung pada pengkompil untuk membuat kesimpulan daripada argumen yang diserahkan kepada pembina:
A<int> a; // Constructs an A object with template value int
Piawaian C 03 dengan jelas menyatakan:
[Nota: kerana senarai argumen templat eksplisit mengikut nama templat fungsi, dan kerana templat fungsi ahli penukaran dan templat fungsi ahli pembina dipanggil tanpa menggunakan nama fungsi, tidak ada cara untuk menyediakan senarai hujah templat eksplisit untuk templat fungsi ini.] (§14.5.2/5)
Penghadan ini mungkin menghalang usaha penyahpepijatan jika pengkompil gagal menentukan parameter templat yang betul. Spesifikasi parameter eksplisit boleh meningkatkan mesej ralat dan berpotensi menyelesaikan isu tersebut. Walau bagaimanapun, ia tidak disokong oleh piawaian C 03.
Atas ialah kandungan terperinci Bolehkah Anda Menentukan Secara Eksplisit Parameter Templat dalam Pembina dalam C 03?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!