什么时候我应该选择提升精神attr_cast而不是语义动作

时间:2013-10-05 22:11:39

标签: c++ boost boost-spirit boost-spirit-qi

这就是标题所说的一切。

在boost spirit qi的上下文中,我不明白attr_cast何时比转换值的语义动作更可取,例如:[_val = convert(_1)]

1 个答案:

答案 0 :(得分:3)

Attr_cast可以帮助精神检测稍微不兼容的属性类型(例如attr_cast<optional<bool>>将'只是bool'更改为'Maybe bool')并定义将在哪个级别属性进行拆分,例如

 string = '0' >> (repeat(3) [ qi::char_("0-9") ] % "'")

可能具有与

不同的属性兼容性
 string = '0' >> attr_cast(repeat(3) [ qi::char_("0-9") ]) % "'"

另见:

  • 为&lt;&GT;
  • as_string
  • as_wstring

换句话说,我觉得attr_cast主要用于转换属性,而不是在子表达式中注释属性 types 预期的暴露属性结构“,而不必诉诸于声明qi::rule<>来注释它。

我只使用attr_cast作为'轻量级'规则。