Subject: Re: [boost] phoenix::bind
From: Joel de Guzman (joel_at_[hidden])
Date: 2008-09-29 09:56:04
Peter Dimov wrote:
> This is not a review, sorry.
> Is it a goal of phoenix::bind to one day replace lambda::bind and
> boost::bind, being a superset of both, as well of std::bind?
lambda::bind, yes. std::bind cannot be replaced. boost::bind, too,
IMO cannot be replaced, not in a long time, due to, as you said
below, it works on more compilers.
> I have hoped for boost::lambda::bind to supercede boost::bind. It is a
> common claim that the only advantage of boost::bind is that it works on
> more compilers. But this isn't true. It supports constructs which
> lambda::bind does not; using smart pointers with member functions,
> member functions of abstract classes, proper const propagation,
> is_placeholder, _4.._9, and so on. There were other differences (lack of
> result_type support...) for which I was able to contribute patches to
> Lambda. But some of the differences are systemic and can only be
> addressed by a maintainer.
I can definitely make sure that all those are supported.
I supported the lambda tests in phoenix. I can do the same
for boost::bind tests in phoenix.
> Having two components named "bind" has always been a problem for our
> users. Having three will not help. Ideally, all "bind"s ought to resolve
> (on a supported compiler circa '08) to the same component.
Sure. Just like what John Maddock did with TR1 tuples targetting
Fuson.Tuples. That can be done.
> When I heard that the next Phoenix (at the time this meant V2) was
> intended to be the successor to both Phoenix 1 and Lambda, I thought
> that we were about to finally have a single bind that "just works".
Except on broken compilers though. That's the main reason why
I think boost.bind will be with us for a long time still.
> But - and sorry if this is not the case - I do not get the impression
> that this is a high priority goal for V2. It'd be nice if I were
> mistaken; it would be nicer still if phoenix::bind passed all
> boost::bind tests so that we can just replace boost/bind.hpp with a
> single using declaration. :-)
It is a priority for Phoenix. I'll make sure that all boost::bind
tests will pass.
Thanks for your comments. All points noted.
-- Joel de Guzman http://www.boostpro.com http://spirit.sf.net
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk