Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Templat dalam Ruang Nama `std` Tidak Boleh Dikhususkan dalam C ?

Apakah Templat dalam Ruang Nama `std` Tidak Boleh Dikhususkan dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-10-31 20:13:02237semak imbas

 What Templates in the `std` Namespace Cannot Be Specialized in C  ?

Sekatan ke atas Pengkhususan std Namespace

Pengenalan

Ruang nama std adalah penting dalam C , menempatkan perpustakaan asas dan templat. Walau bagaimanapun, pengguna mungkin tertanya-tanya di mana garisan dibuat antara penyesuaian yang dibenarkan dan dilarang dalam ruang nama ini. Artikel ini akan menerangkan templat yang tidak boleh dikhususkan dalam std.

Templat Terlarang

Menurut standard C, templat tertentu dalam std tidak boleh dikhususkan secara eksplisit. Ini termasuk:

  • numeric_limits: Dilarang untuk jenis standard bukan aritmetik (cth., kompleks)
  • shared_ptr: Memerlukan CopyConstructibility, CopyAssignability dan LessThanComparability
  • weak_ptr: Memerlukan CopyConstructibility dan CopyAssignability
  • std::hash: kelas hash mesti memenuhi keperluan templat hash . pengkhususan yang diperlukan wujud
  • istreambuf_iterator: Memerlukan pembina salinan remeh, pembina lalai constexpr dan pemusnah remeh
  • kompleks: kesan tidak ditentukan yang lain untuk membuat seketika daripada float, double, atau long double
  • atomic: Memerlukan pembina salinan yang dipadam, operator penugasan salinan dipadam dan pembina nilai constexpr
  • unary_function dan
  • fungsi_binari
  • : Ditamatkan; tidak boleh dikhususkan
  • Sekatan AmDi luar templat yang dilarang, standard C menekankan sekatan berikut:
Ia adalah tingkah laku yang tidak ditentukan untuk mengisytiharkan atau mentakrifkan apa-apa dalam std atau ruang kecilnya melainkan dinyatakan secara eksplisit.

Pengkhususan boleh ditambahkan pada std hanya jika ia bergantung pada jenis yang ditentukan pengguna dan memenuhi keperluan standard untuk templat asal.

Pengkhususan eksplisit fungsi ahli, templat fungsi ahli atau templat kelas ahli kelas perpustakaan std adalah dilarang.

Instasiasi eksplisit dibenarkan hanya jika ia bergantung pada nama jenis yang ditentukan pengguna dan memenuhi standard keperluan untuk templat asal.

Atas ialah kandungan terperinci Apakah Templat dalam Ruang Nama `std` Tidak Boleh Dikhususkan dalam C ?. 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