update to 1_38_0: "classic" spirit not working anymore

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

AMDG Oliver Kullmann wrote:
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)?
No. The namespace changed. Unless BOOST_SPIRIT_USE_OLD_NAMESPACE is defined, the namespace is boost::spirit::classic. In Christ, Steven Watanabe

thanks! this problem is solved. Oliver On Thu, Feb 12, 2009 at 02:11:48PM -0800, Steven Watanabe wrote:
AMDG
Oliver Kullmann wrote:
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)?
No. The namespace changed. Unless BOOST_SPIRIT_USE_OLD_NAMESPACE is defined, the namespace is boost::spirit::classic.
In Christ, Steven Watanabe
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (2)
-
Oliver Kullmann
-
Steven Watanabe