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

C++ 什么时候我应该选择提升精神属性而不是语义动作,c++,boost,boost-spirit,boost-spirit-qi,C++,Boost,Boost Spirit,Boost Spirit Qi,就是这个标题,说吧 在提升精神气功的背景下,我不明白什么时候attr_cast比转换值的语义操作更可取,比如:[u val=convert(_1)]attr_cast可以帮助精神检测稍微不兼容的属性类型(例如attr_cast将“Just bool”更改为“maybool”)以及定义将在哪个级别拆分属性,例如 string = '0' >> (repeat(3) [ qi::char_("0-9") ] % "'") 可能具有不同于的属性兼容性 string = '0' >

就是这个标题,说吧


在提升精神气功的背景下,我不明白什么时候attr_cast比转换值的语义操作更可取,比如:[u val=convert(_1)]

attr_cast可以帮助精神检测稍微不兼容的属性类型(例如
attr_cast
将“Just bool”更改为“maybool”)以及定义将在哪个级别拆分属性,例如

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

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

  • 作为
  • as_字符串
  • 如图所示
换句话说,我觉得
attr\u cast
主要不适用于强制转换属性值,而是使用“预期的公开属性结构”注释子表达式中的属性类型,而无需声明
qi::rule
来注释

我只使用
attr\u cast
作为“轻量级”规则