Templat Khusus dalam Ruang Nama std
Pengguna boleh menambah pengkhususan eksplisit pada ruang nama std, tetapi templat tertentu adalah di luar had. Sekatan ini memastikan bahawa tingkah laku perpustakaan standard kekal konsisten dan jelas.
Pengkhususan Terlarang:
Menurut piawaian C, templat berikut tidak boleh dikhususkan :
-
numeric_limits: Dilarang untuk jenis standard bukan aritmetik (cth., kompleks).
-
shared_ptr: Pengkhususan mesti menjadi CopyConstructible, CopyAssignable, LessThanComparable dan boleh ditukar kepada bool.
-
weak_ptr: Pengkhususan mestilah CopyConstructible dan CopyAssignable.
-
mesti memenuhi>Pengkhususan:hash:
keperluan cincang templat kelas.-
Templat kelas dalam :
Tingkah laku program tidak ditentukan jika pengkhususan ditambahkan untuk templat ini.-
Kompleks:
Tidak ditentukan untuk jenis selain daripada float, double atau long double.-
Atomic:
Pengkhususan mesti mempunyai pembina salinan yang dipadamkan, operator tugasan salinan dan pembina nilai constexpr.- Unary_function dan binary_function:
Ditamatkan dan tidak sepatutnya dikhususkan.
Sekatan Tambahan:
Selain itu, piawaian melarang berikut:
- Menambahkan pengisytiharan atau takrifan pada ruang nama std atau mana-mana ruang kecil tanpa memenuhi keperluan khusus.
- Pengkhususan eksplisit fungsi ahli atau templat ahli kelas perpustakaan standard.
- Pengkhususan eksplisit atau separa bagi templat kelas ahli kelas perpustakaan standard.
Pengkhususan yang Dibenarkan:
Pengkhususan templat hanya dibenarkan jika:
- Mereka bergantung pada jenis yang ditentukan pengguna.
- Mereka mematuhi keperluan perpustakaan standard untuk templat asal.
- Mereka tidak dilarang secara jelas seperti yang digariskan di atas.
Dengan mengikut sekatan ini, pengaturcara boleh memastikan integriti dan kebolehramalan ruang nama std dan perpustakaan standard secara keseluruhan.
Atas ialah kandungan terperinci Bolehkah Anda Mengkhususkan Setiap Templat dalam Ruang Nama `std`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!