Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Templat Bekas Standard Dimulakan dengan Jenis Tidak Lengkap?

Bolehkah Templat Bekas Standard Dimulakan dengan Jenis Tidak Lengkap?

Barbara Streisand
Barbara Streisandasal
2024-11-04 14:59:40940semak imbas

Can Standard Container Templates be Instantiated with Incomplete Types?

Templat Bekas Standard dan Jenis Tidak Lengkap

Timbul persoalan sama ada templat bekas standard boleh dijadikan instantiated dengan jenis yang tidak lengkap. Walaupun pembinaan kontena tertentu mungkin kelihatan berfungsi dalam amalan, Piawaian C 11 secara jelas melarang ini di bawah §17.6.4.8 [lib.res.on.functions].

Piawaian menyatakan bahawa, "… jika jenis tidak lengkap (3.9) digunakan sebagai hujah templat apabila membuat seketika komponen templat, melainkan dibenarkan secara khusus untuk komponen itu." Sekatan ini terpakai pada fungsi ahli, takrifan kelas ahli dan tandatangan, tetapi bukan untuk operasi dalam skop blok.

Pelaksanaan perpustakaan standard tidak boleh mendorong instantiasi templat yang akan gagal untuk jenis yang tidak lengkap, walaupun jika instantiasi lain yang diperlukan khusus berjaya . Larangan ini bertujuan untuk menghalang isu yang berpotensi, seperti jenis rujukan sendiri yang timbul daripada pengoptimuman seperti "vektor kecil."

Pengecualian wujud, seperti templat kelas std::unique_ptr, yang secara jelas menyokong hujah jenis tidak lengkap, walaupun dalam skop blok. Walau bagaimanapun, untuk bekas standard, sekatan untuk menggunakan jenis yang tidak lengkap kekal, memastikan gelagat yang konsisten merentas pelaksanaan.

Atas ialah kandungan terperinci Bolehkah Templat Bekas Standard Dimulakan dengan Jenis Tidak Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn