diff options
Diffstat (limited to 'boost/spirit/home/qi/directive/lexeme.hpp')
-rw-r--r-- | boost/spirit/home/qi/directive/lexeme.hpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/boost/spirit/home/qi/directive/lexeme.hpp b/boost/spirit/home/qi/directive/lexeme.hpp index f0b83993ef..691d4fa52c 100644 --- a/boost/spirit/home/qi/directive/lexeme.hpp +++ b/boost/spirit/home/qi/directive/lexeme.hpp @@ -20,6 +20,7 @@ #include <boost/spirit/home/qi/detail/attributes.hpp> #include <boost/spirit/home/support/info.hpp> #include <boost/spirit/home/support/handles_container.hpp> +#include <boost/utility/enable_if.hpp> namespace boost { namespace spirit { @@ -42,8 +43,8 @@ namespace boost { namespace spirit { namespace qi struct lexeme_directive : unary_parser<lexeme_directive<Subject> > { typedef Subject subject_type; - lexeme_directive(Subject const& subject) - : subject(subject) {} + lexeme_directive(Subject const& subject_) + : subject(subject_) {} template <typename Context, typename Iterator> struct attribute @@ -55,13 +56,26 @@ namespace boost { namespace spirit { namespace qi template <typename Iterator, typename Context , typename Skipper, typename Attribute> - bool parse(Iterator& first, Iterator const& last + typename disable_if<detail::is_unused_skipper<Skipper>, bool>::type + parse(Iterator& first, Iterator const& last , Context& context, Skipper const& skipper - , Attribute& attr) const + , Attribute& attr_) const { qi::skip_over(first, last, skipper); return subject.parse(first, last, context - , detail::unused_skipper<Skipper>(skipper), attr); + , detail::unused_skipper<Skipper>(skipper), attr_); + } + template <typename Iterator, typename Context + , typename Skipper, typename Attribute> + typename enable_if<detail::is_unused_skipper<Skipper>, bool>::type + parse(Iterator& first, Iterator const& last + , Context& context, Skipper const& skipper + , Attribute& attr_) const + { + // no need to pre-skip if skipper is unused + //- qi::skip_over(first, last, skipper); + return subject.parse(first, last, context + , skipper, attr_); } template <typename Context> |