Heim >Backend-Entwicklung >C++ >Warum stürzen Spirit V2-Parser ab, wenn sie „auto'-Variablen zugewiesen werden?

Warum stürzen Spirit V2-Parser ab, wenn sie „auto'-Variablen zugewiesen werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 11:11:10326Durchsuche

Why Do Spirit V2 Parsers Crash When Assigned to `auto` Variables?

Zuweisen von Parsern zu Auto-Variablen: Die versteckte Schwäche von Spirit V2

Spirit-Parser in Spirit V2 sind nicht für die Verwendung mit dem Schlüsselwort auto vorgesehen. Beim Versuch, einer Auto-Variablen einen Parser zuzuweisen, stürzt das Programm möglicherweise mit einem Segmentierungsfehler ab.

Dieses Problem tritt auf, weil die zugrunde liegenden Proto-Ausdrucksvorlagen von Spirit Verweise auf Temporäre enthalten. Um diese Einschränkung zu umgehen, können Sie die folgenden Methoden verwenden:

  • qi::copy(): Verfügbar im Boost V2-Trunk, aber noch nicht veröffentlicht. Kopiert den Parser und erstellt ein neues Objekt.
  • boost::proto::deep_copy: Führt eine tiefe Kopie des Parsers durch und löst alle Verweise auf Temporäre auf.
  • BOOST_SPIRIT_AUTO: Ein Makro definiert als boost::proto::wrap().

Weitere Informationen finden Sie in der StackOverflow-Diskussion unter https://stackoverflow.com/search?q=user:85371 deep_copy.

Hinweis:Diese Einschränkung gibt es nicht in Boost Spirit X3, das über eine modernere Architektur verfügt.

Das obige ist der detaillierte Inhalt vonWarum stürzen Spirit V2-Parser ab, wenn sie „auto'-Variablen zugewiesen werden?. 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