Rumah >pembangunan bahagian belakang >C++ >Bolehkah Anda Mengkhususkan Setiap Templat dalam Ruang Nama `std`?

Bolehkah Anda Mengkhususkan Setiap Templat dalam Ruang Nama `std`?

Barbara Streisand
Barbara Streisandasal
2024-10-29 12:45:29269semak imbas

 Can You Specialize Every Template in the `std` Namespace?

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!

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