<div dir="ltr">please ignore, sorted out.<div>I had to define explicit concepts, rather than the <div><code class="" style="color:rgb(0,0,0);font-size:13px;line-height:15.3333320617676px"><a class="" href="http://www.boost.org/doc/libs/1_56_0/doc/html/BOOST_TYPE_ERASURE_MEMBER.html" title="Macro BOOST_TYPE_ERASURE_MEMBER" style="text-decoration:none;color:rgb(156,90,156)">BOOST_TYPE_ERASURE_MEMBER</a></code><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:15.3333320617676px"> </span><br></div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:15.3333320617676px">thanks</span></div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:15.3333320617676px">-raj</span></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 28, 2014 at 12:48 AM, Raj Sambasivan <span dir="ltr"><<a href="mailto:rajinikanth@gmail.com" target="_blank">rajinikanth@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">HI Boost-users/christophe,<div>I'm trying to make use of type erasure for fsm based on suggestion from an earlier mail thread</div><div><a href="http://boost.2283326.n4.nabble.com/msm-access-to-root-fsm-td4649632.html" target="_blank">http://boost.2283326.n4.nabble.com/msm-access-to-root-fsm-td4649632.html</a><br></div><div>but hitting compilation errors. Can you pls help?</div><div><br></div><div>while the any works as expected for push back e.g for vector (bottom of email) it doesnt work for MSM..</div><div><br></div><div><b><u>Doesn't Work for MSM:</u></b></div><div> <p>BOOST_TYPE_ERASURE_MEMBER((has_process_event), process_event, 1)</p> <p><span>typedef</span> any<has_process_event<HandledEnum(Event1 <span>const</span> &)>, _self&> any_fsm;</p> <p>struct<span> </span><span>AnyFSM</span></p> <p>{</p> <p> AnyFSM(any_fsm afsm_) : <span>_afsm</span>(afsm_) {}</p> <p> <span>void</span> process(<span>Event1</span>& e) { <span>_afsm</span>.process_event(e); }</p> <p> any_fsm <span>_afsm</span>;</p> <p>};</p></div><div>TestFSM test;</div><div>test.start();</div><div>AnyFSM(test);</div><div>test.process(Event1());</div><div><br></div><div><b>error:</b></div><div> <p><b>test.cpp:47:43: </b><span><b>error: </b></span><b>'Event1' does not refer to a value</b></p> <p>typedef any<has_process_event<HandledEnum(Event1 const &)>, _self&> any_fsm;</p></div><div><br></div><div><u>Works for vector:</u></div><div> <p>BOOST_TYPE_ERASURE_MEMBER((has_push_back), push_back, 1)</p> <p><span>typedef</span> any<has_push_back<<span>void</span>(<span>int</span>)>, _self&> any_container;</p> <p><span>void</span> append_many(any_container container) {</p> <p> <span>for</span>(<span>int</span> i = 0; i < 10; ++i)</p> <p> container.push_back(i);</p> <p>}</p> <p><span>struct</span><span> </span>AnyContainer</p> <p>{</p> <p> AnyContainer(any_container cont_) : <span>_cont</span>(cont_) {}</p> <p> <span>void</span> append() {append_many(<span>_cont</span>); }</p> <p> any_container <span>_cont</span>;<br></p> <p>};</p><p>AnyContainer m(v);</p><p> m.append();</p><p> <span>for</span>(<span>auto</span> i : v)</p><p> {</p><p> std::cout << i << std::endl;</p><p> </p><p> }</p><p>Thanks</p><span class="HOEnZb"><font color="#888888"><p>-Raj</p></font></span></div></div> </blockquote></div><br></div>