когда я должен выбрать усиление духа attr_cast вместо семантического действия

Это название говорит само за себя.

В контексте повышения духа qi я не понимаю, когда attr_cast будет предпочтительнее семантического действия, которое преобразует значение, например: [_val = convert(_1)]


person gsf    schedule 05.10.2013    source источник


Ответы (1)


Attr_cast может быть полезен, чтобы помочь духу обнаружить немного несовместимые типы атрибутов (например, attr_cast<optional<bool>>, чтобы изменить «Just bool» на «Maybe bool») и определить, на каком уровне атрибуты будут разделены, например.

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

может иметь другую совместимость атрибутов от

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

Смотрите также:

  • as<>
  • as_string
  • as_wstring

Другими словами, я считаю, что attr_cast в первую очередь полезен не для приведения значений атрибутов, а скорее для аннотирования типов атрибутов в подвыражениях с "предполагаемой открытой структурой атрибутов", без вынужден прибегнуть к объявлению qi::rule<>, чтобы аннотировать это.

Я использую attr_cast только как "облегченные" правила.

person sehe    schedule 06.10.2013