<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">&lt;<a href="mailto:rajinikanth@gmail.com" target="_blank">rajinikanth@gmail.com</a>&gt;</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&#39;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&#39;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&lt;has_process_event&lt;HandledEnum(Event1 <span>const</span> &amp;)&gt;, _self&amp;&gt; 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>&amp; 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>&#39;Event1&#39; does not refer to a value</b></p>
<p>typedef any&lt;has_process_event&lt;HandledEnum(Event1 const &amp;)&gt;, _self&amp;&gt; 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&lt;has_push_back&lt;<span>void</span>(<span>int</span>)&gt;, _self&amp;&gt; any_container;</p>
<p><span>void</span> append_many(any_container container) {</p>
<p>    <span>for</span>(<span>int</span> i = 0; i &lt; 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 &lt;&lt; i &lt;&lt; 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>