I'm trying to construct some euml states with data at the time of the state
machine construction. The below boils down what I'm trying to do and
fails to compile. Should I expect this mechanism to work with the euml
frontend ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include
#include
namespace msm = boost::msm;
using namespace msm::front::euml;
BOOST_MSM_EUML_EVENT(test_event)
BOOST_MSM_EUML_DECLARE_STATE((),test_state_t)
struct test_state_with_constructor : public test_state_t
{
test_state_with_constructor() {}
test_state_with_constructor(int d) : m_d(d) {}
int m_d;
};
test_state_with_constructor const test_state;
BOOST_MSM_EUML_TRANSITION_TABLE((
test_state + test_event == test_state
), test_table)
BOOST_MSM_EUML_DECLARE_STATE_MACHINE
(( test_table, init_ << test_state ), test_table_)
typedef msm::back::state_machine test_machine_t;
int main()
{
test_machine_t tm( msm::back::states_ << test_state_with_constructor(1) );
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
With gcc 4.5 and Boost 1.46.1, I get:
simpletest.cpp: In function 'int main()':
simpletest.cpp:30:75: error: no match for 'operator<<' in
'boost::msm::back::states_ << test_state_with_constructor(1)'
Thanks
Nate