
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