title: boost spirit: how to match any lexer token in qi?
body: <p>I would like to match a C++ function declaration with default argument values, but ignoring these values.
  For example:</p>
  
  <pre><code>int myFunction(int a, int b = 5 + 4);
  </code></pre>
  
  <p>Here is (a part of) the lexer:</p>
  
  <pre><code>struct Lexer : boost::spirit::lex::lexer&lt;lexer_type&gt;
  {
      Lexer()
      {
          identifier = "[A-Za-z_][A-Za-z0-9_]*";
          numLiteral = "([0-9]+)|(0x[0-9a-fA-F]+)";
  
          this-&gt;self.add
              ("int")
              ('+')
              ('=')
              ('(')
              (')')
              (';')
              (',')
              (identifier)
              (numLiteral);
      }
  };
  </code></pre>
  
  <p>I would like to write a couple of parser rules like:</p>
  
  <pre><code>function = qi::lit("int") &gt;&gt; lexer.identifier &gt;&gt; '(' &gt;&gt; arglist &gt;&gt; ')' &gt;&gt; ';';
  arglist = (lexer.numLiteral &gt;&gt; lexer.identifier &gt;&gt; -(lit('=') &gt;&gt; rvalue )) % ',';
  rvalue = +(qi::token() - ',' - ')');
  </code></pre>
  
  <p>I've seen <a href="http://www.boost.org/doc/libs/1_58_0/libs/spirit/doc/html/spirit/what_s_new/spirit_2_4_2.html" rel="nofollow">here</a> that "The parser primitives qi::token and qi::tokenid can now be used without any argument. In this case they will match any token.". Which is what I want (and what I wrote), but unfortunately it does not compile.
  qi::token() really needs at leat one argument.
  Did I miss something?</p>