Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-02-12 22:39:03


The binder functions are /perfect/ examples of object generators with a
compelling motivation! Thanks, Steve

----- Original Message -----
From: <scleary_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Monday, February 12, 2001 9:31 PM
Subject: RE: [boost] Generic Programming page - need better example

> > Unfortunately, this example isn't very compelling. It would be better if
> the
> > input to the object generator was the result of calling a function whose
> > result type was big or impossible to deduce. Can anyone come up with a
> > plausible example which is more motivating?
>
> I think it's fine as it is. But here's another example, combining a
binder
> and a pointer-to-member-function adapter:
>
> Given:
>
> struct MyStruct {
> void call_me(int);
> };
> std::vector<MyStruct *> struct_ptrs;
>
> You can call the member function of all the structs with:
>
> void call_all_structs(int arg)
> {
> std::for_each(struct_ptrs.begin(), struct_ptrs.end(),
> std::bind2nd(std::mem_fun(&MyStruct::call_me), arg));
> }
>
> As opposed to:
>
> void call_all_structs(int arg)
> {
> std::for_each(struct_ptrs.begin(), struct_ptrs.end(),
> std::binder2nd<std::mem_fun1_t<void, MyStruct, int> >(
> std::mem_fun1_t<void, MyStruct, int>(&MyStruct::call_me), arg));
> }
>
> Of course, the lambda/functional libraries should handle this even better.
>
> -Steve
>
>
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk