Boost logo

Boost Users :

Subject: Re: [Boost-users] [Lambda] Getting the bind incantation correct.
From: 肖锋 (xfxyjwf_at_[hidden])
Date: 2011-05-23 06:42:46


On Mon, May 23, 2011 at 6:25 PM, Robert Jones <robertgbjones_at_[hidden]>wrote:

> Hi All
>
> I'm trying to use std::vector::push_back() within a Boost.Lambda
> expression, but am finding it impossible
> to bind correctly. Can anyone tell me what I'm doing wrong in this code?
>
> Thanks in advance,
>
> - Rob.
>
> #include <vector>
> #include <boost/function.hpp>
> #include <boost/lambda/bind.hpp>
>
> void f( )
> {
> namespace ll = boost::lambda;
> using boost::function;
>
> typedef unsigned char Id;
> typedef std::vector<Id> Ids;
>
> ll::placeholder1_type x;
>
> Ids ids;
> void ( Ids::* push_back )( const Ids::value_type & ) = &
> Ids::push_back;
>
> function<void(Id)> my_push = ll::bind( push_back, ids, x ); // Line 18
>
Change ids to ll:var(ids) because the operation 'push_back' needs a mutable
object.

>
> (void)my_push;
> }
>
> > g++ ignore.cpp
>
> [...lots of template instantiation errors, then...]
>
> ignore.cpp:18: instantiated from here
> /usr/include/boost/lambda/detail/actions.hpp:96: error: no matching
> function for call to ‘boost::lambda::function_adaptor<void
> (std::vector<unsigned char, std::allocator<unsigned char> >::*)(const
> unsigned char&)>::apply(void (std::vector<unsigned char,
> std::allocator<unsigned char> >::* const&)(const unsigned char&), const
> std::vector<unsigned char, std::allocator<unsigned char> >&, unsigned
> char&)’
> /usr/include/boost/lambda/detail/actions.hpp:96: error: return-statement
> with a value, in function returning 'void'
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



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