Heim > Backend-Entwicklung > C++ > Verbietet der C 11-Standard Copy-on-Write-Implementierungen für „std::string'?

Verbietet der C 11-Standard Copy-on-Write-Implementierungen für „std::string'?

Barbara Streisand
Freigeben: 2024-12-19 07:04:14
Original
974 Leute haben es durchsucht

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

Legalität der Copy-on-Write (COW)-Implementierung in std::string von C 11

Es ist eine weit verbreitete Meinung, dass Copy-on-Write (COW) ist kein zulässiger Weg, um eine konforme Implementierung von std::string in C 11 zu realisieren. Aktuelle Diskussionen haben dies jedoch in Frage gestellt Vorstellung.

Verbietet C 11 COW-Implementierungen von std::string?

Ja, COW-basierte Implementierungen von std::string sind in C 11 verboten.

Standardbestimmungen

Die Einschränkung ist ausdrücklich im C 11-Standard angegeben (Abschnitt 21.4.1 p6):

"Die Ungültigmachung von Iteratoren/Referenzen ist nur zulässig für:

  • Als Argument an jede Standardbibliotheksfunktion, die einen Verweis auf einen nicht konstanten Basic_String als Argument verwendet.
  • Aufruf Nicht konstante Mitgliedsfunktionen, außer Operator[], at, front, back, begin, rbegin, end und rend.*"

Implikation für COW

Für einen COW-String würde der Aufruf des nicht konstanten Operators[] das Erstellen einer Kopie erfordern (was Referenzen ungültig machen würde). Diese Aktion ist jedoch durch den Standard verboten, wodurch COW-Implementierungen von std::string in C 11 nicht konform sind.

Das obige ist der detaillierte Inhalt vonVerbietet der C 11-Standard Copy-on-Write-Implementierungen für „std::string'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage