Subject: [boost] update to 1_38_0: "classic" spirit not working anymore
From: Oliver Kullmann (O.Kullmann_at_[hidden])
Date: 2009-02-12 17:05:44


Hi,

with 1_38_0 I can't get any code compiling related to spirit; all that worked
with 1_34_1.

According to those compiler warnings I'm using now the "classic" versions,
but this doesn't help. Consider

#include <boost/spirit/include/classic_core.hpp>
namespace OKlib {
  namespace Parser {
    template <typename CharT = char, typename ParseIterator_ = const CharT*>
    class ParserBase {
    public :
      typedef CharT char_type;
      typedef ParseIterator_ ParseIterator;
      typedef boost::spirit::scanner<ParseIterator> scanner_type;

This used to work (with boost/spirit/core.hpp), but now I get the error message
(gcc version 4.1.2):

ParserBase.hpp:27: error: ISO C++ forbids declaration of ‘scanner’ with no type
ParserBase.hpp:27: error: typedef name may not be a nested-name-specifier
ParserBase.hpp:27: error: expected ‘;’ before ‘<’ token

where line 27 is the line where scanner_type is defined. ???

Did the definition of class template scanner change (apparently it now has two
parameters)?

Oliver