...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
transform_attributenow has to implement a third function:
void fail(Exposed&), which normally will do nothing. This function will be called whenever the right hand side of the
rule(or the embedded parser of
attr_cast) fail parsing. This change affects Qi only. See the description of the
traits::transform_attributefor more details.
BOOST_FUSION_ADAPT_CLASS_NAMED. This support requires to include the new header file:
karma::ostream_iteratoras a counterpart to
qi::istream_iterator(see new header file:
qi::holdallowing to make sure the embedded parser does not touch the passed attribute in case it fails parsing.
qi::no_skipdirective, which is equivalent to
lexeme, except that it does not pre-skip.
karma::no_delimitdirective, which is equivalent to
verbatim, except that it does not perform a post-delimiting step.
multi_passiterator framework (named
buffering_input_iterator) allowing to wrap underlying input iterators which do not store the last character read from the input (such as
std::istream_iterator). This is now used as the default input policy.
karma::buffer[karma::buffer[...]]don't result in performing double buffering anymore. The same is true if an alternative is wrapped into a
karma::bufferdirective (as for instance:
buffer[a] | b).
multi_passiterator is now usable with underlying input iterators which do not store the last character read from the input (such as
std::istream_iterator). Thanks to Larry Evans and Peter Schueller for independently reporting this problem.
karma::omitnow does not accept an arbitrary attribute type anymore.
karma::omitnow disable output altogether instead of intercepting the output into a buffer which got discarded as before.
karma::ruleto properly handles optional attributes.
lexer<>::init_dfa()now takes a single boolean parameter (which defaults to
false) allowing to force minimization of the generated lexer tables.