Thanks again Joel.<br><br><div class="gmail_quote">2010/1/30 joel falcou <span dir="ltr"><<a href="mailto:joel.falcou@lri.fr">joel.falcou@lri.fr</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div class="im">Olivier Tournaire wrote:<br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Hi all,<br> <br> Given an mpl sequence of types such as: typedef mpl::vector<T0, T1, T2, T3> arg_types;<br> <br> 1) the users of my library provide functors such as F (where T0 and T1 may have been any of the types of arg_types:<br> <br> class F {<br> �typedef mpl::pair<T0,T1> signature_type;<br> �double operator()(const T0& t0, T1& t1);<br> };<br> is there a way to generate signature_type automatically ?<br> <br> </blockquote></div> Retrieve the operator() params usign aprameter_types, it'll end up as<br> <br> vector<F*,T0,T1><br> <br> then use mpl::pop_front to remove the unwanted pointer to member<div class="im"><br> <br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> 2) if the operator() is overloaded, the user class currently has to typedef an mpl::vector of mpl::pairs such as<br> <br> class G {<br> �typedef mpl::vector<mpl::pair<T2,T3>, mpl::pair<T1,T1>, mpl::pair<T3,T1> > signature_type;<br> �double operator()(const T2& t2, T3& t3);<br> �double operator()(const T1& t1, T1& t1);<br> �double operator()(const T3& t3, T1& t1);<br> };<br> <br> </blockquote></div> Why don't you use something like the result_of protocol ?<br></blockquote><div><br>Why not. Could you give us more details ?<br><br>Regards<br>�</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Maybe easier<br> <br> -- <br> ___________________________________________<br> Joel Falcou - Assistant Professor<br> PARALL Team - LRI - Universite Paris Sud XI<br> Tel : (+33)1 69 15 66 35<br> <br> <br> _______________________________________________<br> Boost-users mailing list<br> <a href="mailto:Boost-users@lists.boost.org" target="_blank">Boost-users@lists.boost.org</a><br> <a href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_blank">http://lists.boost.org/mailman/listinfo.cgi/boost-users</a><br> </blockquote></div><br>