Rumah >pembangunan bahagian belakang >C++ >Adakah Piawaian C 11 Melarang Pelaksanaan Salinan-Tulis untuk `std::string`?

Adakah Piawaian C 11 Melarang Pelaksanaan Salinan-Tulis untuk `std::string`?

Barbara Streisand
Barbara Streisandasal
2024-12-19 07:04:14938semak imbas

Does C  11 Standard Prohibit Copy-on-Write Implementations for `std::string`?

Legaliti Pelaksanaan Copy-on-Write (COW) dalam std::string C 11

Sudah menjadi kepercayaan umum bahawa Copy-on-write (COW) bukanlah cara yang dibenarkan untuk merealisasikan pelaksanaan yang mematuhi std::string dalam C 11. Walau bagaimanapun, perbincangan baru-baru ini telah mencabar tanggapan ini.

Adakah C 11 Melarang Pelaksanaan std::string COW?

Ya, pelaksanaan std berasaskan COW: :rentetan adalah dilarang dalam C 11.

Standard Ketetapan

Sekatan dinyatakan secara jelas dalam piawaian C 11 (bahagian 21.4.1 p6):

"Pembatalan iterator/rujukan hanya dibenarkan untuk:

  • Sebagai hujah kepada mana-mana fungsi perpustakaan standard yang mengambil rujukan kepada non-const basic_string sebagai hujah.
  • Memanggil fungsi bukan ahli const, kecuali operator[], di, depan, belakang, mula, rmula, tamat dan rend.*"

Implikasi untuk LEMBU

Untuk rentetan LEMBU, memanggil bukan const operator[] akan memerlukan membuat salinan (yang akan membatalkan rujukan). Walau bagaimanapun, tindakan ini dilarang oleh standard, menyebabkan pelaksanaan COW std::string tidak mematuhi C 11.

Atas ialah kandungan terperinci Adakah Piawaian C 11 Melarang Pelaksanaan Salinan-Tulis untuk `std::string`?. 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