Boost logo

Boost Users :

Subject: Re: [Boost-users] if_then_else_return (boost::lambda) question
From: Jonathan Leonard (v-jleonard_at_[hidden])
Date: 2009-02-19 13:27:45


Steven Watanabe wrote:
>
> Jonathan Leonard wrote:
> > I'm fairly new to boost and have a little problem with
> > if_then_else_return. Can anyone tell me the problem with the
> following
> > short program? [It seems that my 'thenBranch' and 'elseBranch'
> > functions are never called and if_then_else_return' always returns
> > true (as if the 'then' branch were called)].
>
> The problem is that Boost.Lambda doesn't automatically call the
> boost::function.
> Thus, evaluating the lambda expression returns a boost::function,
> boost::function
> implicitly converts to bool. (false iff the boost::function is empty.)
> If you use boost::lambda::bind(MakeReturnTrue(thenBranch)), it should
> work.
>

Awesome! That indeed does work.

> > P.S. (A more general C++ q: A little improvement I'd like to make is
> > to drop the ITERATORTYPE type argument from IfNotEndThenElseReturn
> and
> > use CONTAINERTYPE::iterator instead, but the compiler won't allow
> > that. Anyone know why?). Thanks again!
>
> typename CONTAINERTYPE::iterator works for me. Did you forget
> typename?
>

Yep. Thank you!


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net