|
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 acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk