Heim > Backend-Entwicklung > C++ > Können Spirit-Parser mit „auto'-Variablen verwendet werden?

Können Spirit-Parser mit „auto'-Variablen verwendet werden?

Patricia Arquette
Freigeben: 2024-12-02 04:03:09
Original
197 Leute haben es durchsucht

Can Spirit Parsers Be Used with `auto` Variables?

Parser Auto-Variablen zuweisen

Frage:

Können Spirit-Parser mit Auto verwendet werden?

Codeausschnitt:

auto bracketed_z = '[' >> +qi::char_('z') >> ']';
Nach dem Login kopieren

Beim Zuweisen eines Parsers zu einer Auto-Variablen, wie oben gezeigt, wird der Code stürzt mit einem Segmentierungsfehler ab. Die direkte Übergabe des Parsers an qi::parse() inline funktioniert jedoch einwandfrei.

Antwort:

Nein, Spirit-Parser sind nicht für die Verwendung mit Auto in Spirit V2 vorgesehen.

Erklärung:

Die zugrunde liegenden Proto-Ausdrucksvorlagen enthalten Verweise auf Temporäre. Das Zuweisen eines Parsers zu einer Auto-Variable führt dazu, dass der Parser kopiert wird, was zu fehlenden Referenzen führen kann.

Lösungen:

Um dieses Problem zu umgehen, können Sie die folgenden Methoden verwenden:

  • qi::copy() (verfügbar im Boost-Trunk nach Boost 1.55.0)
  • boost::proto::deep_copy
  • BOOST_SPIRIT_AUTO

Das obige ist der detaillierte Inhalt vonKönnen Spirit-Parser mit „auto'-Variablen verwendet werden?. 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