$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Dan W. (danw_at_[hidden])
Date: 2003-11-30 15:53:20
Hi, I'm using latest betas for Digital Mars, STLport and BOOST, and I'm
trying to compile a state-machine using boost's fsm::state_machine.
My include line is as follows:
G:\boost-1.30.2;G:\boost-1.30.2\boost\mpl;G:\boost-1.30.2\libs\mpl\example\fsm;G:\dm\STLport-5.0-1031\stlport;G:\dm\include
Here's the top of my file:
...............................................................................
#include <iostream>
#include "boost/mpl/list.hpp"
#include "state_machine.hpp"
namespace mpl = boost::mpl;
class rec_frm_sm : fsm::state_machine<rec_frm_sm>
{
public:
...............................................................................
What I get on the output window is:
sc rec_frm.cpp -Ae -Aa -r -mn -C -WA -S -3 -a8 -c -gf -IG:\boost-1.30.2
-IG:\boost-1.30.2\boost\mpl -IG:\boost-1.30.2\libs\mpl\example\fsm
-IG:\dm\STLport-5.0-1031\stlport -IG:\dm\include -orec_frm.obj
Error: G:\boost-1.30.2\boost/mpl/aux_/preprocessed/plain /quote.hpp(7): no
type for argument 'T'
Error: G:\boost-1.30.2\boost/mpl/aux_/has_type.hpp(23): no type for
argument 'T'
Error: G:\boost-1.30.2\libs\mpl\example\fsm\state_machine.hpp(67): ';'
expected following declaration of struct member
Error: G:\boost-1.30.2\libs\mpl\example\fsm\state_machine.hpp(73): '{' expected
Fatal Error: G:\boost-1.30.2\libs\mpl\example\fsm\state_machine.hpp(78):
too many errors
Lines Processed: 34008 Errors: 5 Warnings: 0
Build failed
I'm not sure how to track the include path for quote.hpp and has_type.hpp.
I notice there's a link at www.boost.org for tracking header file
inclusion, but the link appears to be broken.
The other errors happen in the state_machine.hpp file from boost, which I
modified to add a visitor hook, as follows:
..................................................................................
state_t current_state() const
{
return m_state;
}
// ******************** added by DW *********************** \\
struct avisitor
{ // <-------------(1)
template < state_t S >
virtual void visit( S s ) const
{
assert( false );
}
template < state_t S, class C > // <-------------(2)
virtual void visit( S s, C const & c ) const
{
assert( false );
}
};
template < avisitor V >
void accept( V const & v ) const
{
v.visit(m_state);
}
template < avisitor V >
void accept( V const & v )
{
v.visit(m_state);
}
template < avisitor V, class C >
void accept( V const & v, C const & c ) const
{
v.visit(m_state,c);
}
template < avisitor V, class C >
void accept( V const & v, C const & c )
{
v.visit(m_state,c);
}
//********************************************************\\
protected:
// interface for the derived class
state_machine(state_t const& initial_state)
: m_state(initial_state)
{}
..........................................................................
The missing semicolon is reported at the opening brace of struct avisitor (1).
The '{' expected happens at the line of the second template declaration (2).
Any help would be appreciated.
Yours.
dan