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

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

Patricia Arquette
發布: 2024-11-21 11:11:10
原創
320 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板