summaryrefslogtreecommitdiff
path: root/boost/spirit/home/qi/directive/lexeme.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/spirit/home/qi/directive/lexeme.hpp')
-rw-r--r--boost/spirit/home/qi/directive/lexeme.hpp24
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>