Boost logo

Boost Users :

Subject: [Boost-users] [Lambda] Getting the bind incantation correct.
From: Robert Jones (robertgbjones_at_[hidden])
Date: 2011-05-23 06:25:40


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

    (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 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