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

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

Patricia Arquette
Patricia Arquette原创
2024-12-02 04:03:09189浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn