首頁 >後端開發 >C++ >為什麼 Spirit V2 解析器在分配給'auto”變數時會崩潰?

為什麼 Spirit V2 解析器在分配給'auto”變數時會崩潰?

Patricia Arquette
Patricia Arquette原創
2024-11-21 11:11:10339瀏覽

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

將解析器分配給 Auto 變數:Spirit V2 的隱藏弱點

Spirit V2 中的 Spirit 解析器不適合與 auto 關鍵字一起使用。當嘗試將解析器指派給自動變數時,程式可能會因分段錯誤而崩潰。

出現此問題是因為 Spirit 的底層 Proto 表達式模板保存了對臨時變數的引用。要解決此限制,您可以使用以下方法:

  • qi::copy():在 Boost V2 主幹中可用,但尚未發布。複製解析器,建立一個新物件。
  • boost::proto::deep_copy:執行解析器的深層複製,解析對臨時物件的任何參考。
  • BOOST_SPIRIT_AUTO:定義為的宏boost::proto::wrap().

有關更多信息,請參閱https://stackoverflow. com/search?q=user:85371 deep_copy 上的StackOverflow 討論。

注意:Boost Spirit X3 不存在這個限制,它具有更現代的架構。

以上是為什麼 Spirit V2 解析器在分配給'auto”變數時會崩潰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn