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
Freigeben: 2024-12-20 00:43:09
Original
892 Leute haben es durchsucht

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!

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