
Ovanes, you are right in as much as there's something wrong with what's inside the if. Problem is, I've tried far more than just what I posted here and I couldn't get it to compile once. So I figured I may use if_ the wrong way. Anyway, not posting a standalone example is generally not a good idea but I wanted to focus more on the general idea and how to tackle it rather than what may be wrong with a particular code example I may or may not have. Anyway, I'll attach at least a standalone test of what I meant here. It shows the error nicely but contains lots of other crap I've played around with. Cheers, Stephan On Wed, Jun 23, 2010 at 6:50 PM, Ovanes Markarian <om_boost@keywallet.com> wrote:
Stephan, hi! please see my answer below.
On Wed, Jun 23, 2010 at 5:42 PM, Stephan Menzel <stephan.menzel@gmail.com> wrote:
Unless I want to add something. Unfortunately I can't always take wrap()s output but have to modify a little. In fact, my Queue needs to be templatized as well, modifying the behaviour of the functor. I have a template parameter "Calling". When it is true, another function shall be called by the functor after the method was posted. Now I wanted to do this by phoenix:
template <bool Calling> class Queue { template<typename Handler> void post(Handler n_handler) { m_iosrv.post(n_handler); }; ... template<typename SlotSignature, typename SlotFunction> boost::signals2::connection connect(boost::signals2::signal<SlotSignature> &n_signal, SlotFunction n_method) { return n_signal.connect( if_( CallingBack ) [ post(n_method) , m_signal_callback() ] .else_ [ m_iosrv.wrap( n_method ) ] ); }; ...
It is difficult to conclude smth from the code without having a self-containing example. But my assumption is that in the 'else'-branch your code does not generate a function object. As far as I can see in the 'if'-branch your code generates a function object using the the comma-operator (if that operator is overloaded in Phoenix), in the 'else'-branch you just have a normal function call, which is not lazy and does not return a function-object. Hope that helps, Ovanes
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users