Boost logo

Boost Users :

Subject: Re: [Boost-users] Help with a boost::lambda problem and boost::array?
From: Max (loadcom_at_[hidden])
Date: 2009-01-22 21:17:00


Hello

I don't know why this version works

        std::vector<Real> vec(2);
        vec[0] = 1; vec[1] = 2;
        boost::function<Real (std::vector<Real>)> vec_f = _1[0]; //Returns
the 0'th element.
        boost::function<Real (std::vector<Real>)> vec_f1 = _1[0] * _1[1];

but this one doesn't.

        std::vector<Real> vec(2);
        vec[0] = 1; vec[1] = 2;
        boost::function<Real (const std::vector<Real>&)> vec_f = _1[0];
//Returns the 0'th element.
        boost::function<Real (const std::vector<Real>&)> vec_f1 = _1[0] *
_1[1];

B/Rgds
Max

From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of
jesseperla_at_[hidden]
Sent: Friday, January 23, 2009 1:37 AM
To: Boost Users Mailing List
Subject: [Boost-users] Help with a boost::lambda problem and boost::array?

> Is there a solution?

It appeared to me that the likely winner was:
http://www.boost.org/doc/libs/1_37_0/doc/html/lambda/extending.html

Then it seems we would use the boost array's typedef value_type to get the
return type. However, I do not see operator[] overloading in the list of
supporting operators here.

But the following code compiles:
//Testing lambda and vectors/arrays.
using lambda::_1;
std::vector<Real> vec(1);
vec[1] = 0;
boost::function<Real (std::vector<Real>)> vec_f = _1[0]; //Returns the 0'th
element.

Hence, it seems that this type of action is supported. Any idea where the
sourcecode for the std::vector lambda operators are? might be useful to just
copy/paste.

Also, I wonder if there is any way to do this generically for all
vector/array types supporting the Container concept? (I use a lot of
ublas::vectors). And if operator() is also supported, I use a lot of
ublas::matrix as well, so this would be nice to have in lambda.

Jesse


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