Здравствуйте, kurchatov, Вы писали:
K>Здравствуйте, TimurSPB, Вы писали:
TSP>>И у спирита есть ещё одна фича(?) — тот кто написал вещи типа:
TSP>>( *( bs::anychar_p - bs::ch_p( 0x1F ) - bs::ch_p( '"' ) ) )[ bs::assign_a( attr.StrValue ) ]>> !bs::ch_p( 0x1F );
K>Сейчас кто-нибудь придет и скажет, какой это красивый и выразительный код
Насчет красивого хз, но все понятно.
Непонятно только, зачем там кавычка, если терминатор — '0x1F').
Плюс, чтобы вычитать символы из множества, нет нужды каждый символ оборачивать в bs::ch_p. Так что весь крокодил
bs::anychar_p — bs::ch_p( 0x1F ) — bs::ch_p( '"' ) превращается в коротенький
~bs::chset("\x1F\"").
Плюс для чтения строчки, ограниченной всякими '0x1F', есть специальный парсер confix_p.
Т.е. парсер для строчки, ограниченной '\x1F', вместо
всего крокодила выше, будет записываться как:
bs::confix_p( '\x1F', (*(bs::anychar_p-'"'))[ bs::assign_a( attr.StrValue ) ], '\x1F')