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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-02 04:03:09190Durchsuche

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') >> ']';

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!

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