Это название говорит само за себя.
В контексте повышения духа qi я не понимаю, когда attr_cast будет предпочтительнее семантического действия, которое преобразует значение, например: [_val = convert(_1)]
Это название говорит само за себя.
В контексте повышения духа qi я не понимаю, когда attr_cast будет предпочтительнее семантического действия, которое преобразует значение, например: [_val = convert(_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") ]) % "'"
Смотрите также:
Другими словами, я считаю, что attr_cast
в первую очередь полезен не для приведения значений атрибутов, а скорее для аннотирования типов атрибутов в подвыражениях с "предполагаемой открытой структурой атрибутов", без вынужден прибегнуть к объявлению qi::rule<>
, чтобы аннотировать это.
Я использую attr_cast
только как "облегченные" правила.