
(4) finally, I templated the state<> version, , which has problems.
[NOTE: I've referenced line # 3773 below, to sync with output]
struct NDIREV_17 {};
template< typename I > struct Start;
template< typename I > struct Inst : public sc::state_machine< Inst<I>, Start<I> > {};[ line# 3773 ]
template< typename I > struct Start : public sc::state< Start<I>, Inst<I> > { Start<I>(my_context ctx ) : my_base( ctx ) {} };
Did you try this way: template<typename I> struct Inst : public sc::state_machine<Inst<I>, mpl::list<Start<I> > >
// same 'main'
//************************************************************************ (5) ATTEMPTS TO FIX:
a) look @ code in state.hpp ( shown below ) and attempt to replace "my_context" & "my_base" with direct substitutions of "simple_state" and this->set_context.... no luck.
REQUEST FOR HELP: Could someone who has successfully templated both the machine<> and the state<> classes possibly give me a hint as to what I might be able to do to fix this bug?
Thank you for your time and effort;
Tony Turner acturner01@comcast.net
//************************************************************************ (6) state.hpp fragment
// here is 'state<> fragment from state.hpp
template< class MostDerived, class Context, class InnerInitial = mpl::list<>, history_mode historyMode = has_no_history > class state : public simple_state< MostDerived, Context, InnerInitial, historyMode > { typedef simple_state< MostDerived, Context, InnerInitial, historyMode > base_type;
protected: ////////////////////////////////////////////////////////////////////////// struct my_context { my_context( typename base_type::context_ptr_type pContext ) : pContext_( pContext ) { }
typename base_type::context_ptr_type pContext_; };
typedef state my_base;
state( my_context ctx ) { this->set_context( ctx.pContext_ ); }
~state() {}
------------------------------------------------------------ ------------------------------------------------------------
Resulting Error msg:
Device.hpp:3774: error: expected `)' before 'ctx' In file included from src/bin/UnitTestDevice.cpp:25: Device.hpp:3774: error: expected `)' before 'ctx' /usr/include/boost/statechart/state.hpp: In static member function 'static typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::inner_context_ptr_type boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::shallow_construct(const typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::context_ptr_type&, typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]': /usr/include/boost/statechart/state.hpp:79: instantiated from 'static void boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::deep_construct(const typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::context_ptr_type&, typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]' /usr/include/boost/statechart/state.hpp:70: instantiated from 'static void boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::initial_deep_construct(typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]' /usr/include/boost/statechart/state_machine.hpp:701: instantiated from 'void boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initial_construct() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' /usr/include/boost/statechart/state_machine.hpp:716: instantiated from 'boost::statechart::result boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initial_construct_function::operator()() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' /usr/include/boost/statechart/null_exception_translator.hpp:33: instantiated from 'boost::statechart::result boost::statechart::null_exception_translator::operator()(Action, ExceptionEventHandler) [with Action = boost::statechart::state_machine<MNavAnts::Inst1<MNavAnts::NDIREV_99>, MNavAnts::Start1<MNavAnts::NDIREV_99>, std::allocator<void>, boost::statechart::null_exception_translator>::initial_construct_function, ExceptionEventHandler = boost::statechart::state_machine<MNavAnts::Inst1<MNavAnts::NDIREV_99>, MNavAnts::Start1<MNavAnts::NDIREV_99>, std::allocator<void>, boost::statechart::null_exception_translator>::exception_event_handler]' /usr/include/boost/statechart/state_machine.hpp:253: instantiated from 'void boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initiate() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' src/bin/UnitTestDevice.cpp:870: instantiated from here /usr/include/boost/statechart/state.hpp:89: error: no matching function for call to 'MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1( boost::statechart::state<MNavAnts::Start1<MNavAnts::NDIREV_99>, MNavAnts::Inst1<MNavAnts::NDIREV_99>, boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, has_no_history>::my_context)' Device.hpp:3773: note: candidates are: MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1() Device.hpp:3773: note: MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1(const MNavAnts::Start1<MNavAnts::NDIREV_99>&) /usr/include/boost/statechart/state.hpp: In static member function 'static typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::inner_context_ptr_type boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::shallow_construct(const typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::context_ptr_type&, typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]': /usr/include/boost/statechart/state.hpp:79: instantiated from 'static void boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::deep_construct(const typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::context_ptr_type&, typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]' /usr/include/boost/statechart/state.hpp:70: instantiated from 'static void boost::statechart::state<MostDerived, Context, InnerInitial, historyMode>::initial_deep_construct(typename boost::statechart::simple_state<MostDerived, Context, InnerInitial, historyMode>::outermost_context_base_type&) [with MostDerived = MNavAnts::Start1<MNavAnts::NDIREV_99>, Context = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InnerInitial = boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::statechart::history_mode historyMode = has_no_history]' /usr/include/boost/statechart/state_machine.hpp:701: instantiated from 'void boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initial_construct() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' /usr/include/boost/statechart/state_machine.hpp:716: instantiated from 'boost::statechart::result boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initial_construct_function::operator()() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' /usr/include/boost/statechart/null_exception_translator.hpp:33: instantiated from 'boost::statechart::result boost::statechart::null_exception_translator::operator()(Action, ExceptionEventHandler) [with Action = boost::statechart::state_machine<MNavAnts::Inst1<MNavAnts::NDIREV_99>, MNavAnts::Start1<MNavAnts::NDIREV_99>, std::allocator<void>, boost::statechart::null_exception_translator>::initial_construct_function, ExceptionEventHandler = boost::statechart::state_machine<MNavAnts::Inst1<MNavAnts::NDIREV_99>, MNavAnts::Start1<MNavAnts::NDIREV_99>, std::allocator<void>, boost::statechart::null_exception_translator>::exception_event_handler]' /usr/include/boost/statechart/state_machine.hpp:253: instantiated from 'void boost::statechart::state_machine<MostDerived, InitialState, Allocator, ExceptionTranslator>::initiate() [with MostDerived = MNavAnts::Inst1<MNavAnts::NDIREV_99>, InitialState = MNavAnts::Start1<MNavAnts::NDIREV_99>, Allocator = std::allocator<void>, ExceptionTranslator = boost::statechart::null_exception_translator]' src/bin/UnitTestDevice.cpp:870: instantiated from here /usr/include/boost/statechart/state.hpp:89: error: no matching function for call to 'MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1( boost::statechart::state<MNavAnts::Start1<MNavAnts::NDIREV_99>, MNavAnts::Inst1<MNavAnts::NDIREV_99>, boost::mpl::list<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, has_no_history>::my_context)' Device.hpp:3773: note: candidates are: MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1() Device.hpp:3773: note: MNavAnts::Start1<MNavAnts::NDIREV_99>::Start1(const MNavAnts::Start1<MNavAnts::NDIREV_99>&)
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users