Heim >Backend-Entwicklung >C++ >Ist eine Copy-on-Write-std::string-Implementierung in C 11 zulässig?

Ist eine Copy-on-Write-std::string-Implementierung in C 11 zulässig?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 00:43:09922Durchsuche

Is a Copy-on-Write std::string Implementation Legal in C  11?

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

Obwohl man vielleicht geglaubt hat, dass COW Da es sich bei der Implementierung eines kompatiblen std::string in C 11 nicht um eine praktikable Technik handelt, haben jüngste Diskussionen zu Unsicherheiten geführt. Im Folgenden wird die Gültigkeit dieser Annahme basierend auf dem neuen Standard untersucht.

Verbot von COW-basierten std::string-Implementierungen in C 11

C 11 verbietet COW ausdrücklich -basierte Implementierungen von std::string. Diese Einschränkung ist in Abschnitt 21.4.1 p6 des Standards angegeben, der die Ungültigmachung von Iteratoren/Referenzen nur unter bestimmten Umständen zulässt:

  • Als Argument für eine Standardbibliotheksfunktion, die einen Verweis auf eine Nicht-Funktion akzeptiert -const basic_string.
  • Aufrufen von nicht-konstanten Memberfunktionen, mit Ausnahme von Operator[], at, front, back, begin, rbegin, end und rend.

In einer COW-Zeichenfolge erfordert der Aufruf eines nicht konstanten Operators[] das Erstellen einer Kopie (was Verweise ungültig macht), was im oben genannten Absatz verboten ist. Folglich sind COW-Strings in C 11 aufgrund dieser Einschränkung verboten.

Das obige ist der detaillierte Inhalt vonIst eine Copy-on-Write-std::string-Implementierung in C 11 zulässig?. 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