首页 > 后端开发 > C++ > Spirit 解析器可以与'auto”变量一起使用吗?

Spirit 解析器可以与'auto”变量一起使用吗?

Patricia Arquette
发布: 2024-12-02 04:03:09
原创
188 人浏览过

Can Spirit Parsers Be Used with `auto` Variables?

将解析器分配给 Auto 变量

问题:

Spirit 解析器可以与 auto 一起使用吗?

代码片段:

auto bracketed_z = '[' >> +qi::char_('z') >> ']';
登录后复制

将解析器分配给 auto 变量时,如如上所示,代码因分段错误而崩溃。然而,将解析器直接传递给 qi::parse() 内联工作正常。

答案:

不,Spirit 解析器不适合与 Spirit V2 中的 auto 一起使用。

说明:

底层 Proto 表达式模板保存对临时变量的引用。将解析器分配给自动变量会导致解析器被复制,这可能会导致悬空引用。

解决方案:

要解决此问题,您可以使用以下方法:

  • qi::copy() (在 Boost 之后的 Boost trunk 中可用) 1.55.0)
  • boost::proto::deep_copy
  • BOOST_SPIRIT_AUTO

以上是Spirit 解析器可以与'auto”变量一起使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板