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
Barbara StreisandOriginal
2024-12-19 07:04:14927Durchsuche

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!

Stellungnahme:
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