Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-11-05 12:40:18

David Abrahams wrote:
> "Peter Dimov" <pdimov_at_[hidden]> writes:
>> David Abrahams wrote:
>>> "Peter Dimov" <pdimov_at_[hidden]> writes:
>>>> Of course f = t; is merely a shorthand way of spelling f =
>>>> boost::lambda::constant(t), but a dependency on lambda isn't always
>>>> desirable.
>>>> Thoughts?
>>> By the same token, one could argue that this functionality ought to
>>> be pushed into boost::bind.
>> I'm not sure what you mean. What functionality ought to be pushed
>> into boost::bind?
> The ability to build an always(whatever) function object:
> f = boost::bind(t);

This is not an improvement over

f = constant( t );

It still needs a glue call. Also, it doesn't make much sense to use
boost::bind for this functionality, because constants do not have any
arguments that could be bound. The bind way to make a constant is bind(
identity<T>(), t ).

The original motivating example is this:

struct button
    boost::function<bool()> is_enabled;

bool sometimes();

int main()
    button b;

    b.is_enabled = true;
    b.is_enabled = false;
    b.is_enabled = sometimes;

I don't want the simple syntax to be encumbered by constant() or bind().

Boost list run by bdawes at, gregod at, cpdaniel at, john at