Boost logo

Boost Users :

From: jarvi (jarvi_at_[hidden])
Date: 2005-09-01 11:26:58


On Aug 30, 2005, at 7:25 AM, Pierre viallet wrote:

> I’m just starting to use boost::lambda an boost::lambda::bind, and I
> do not understand why this do not work whith valarray :
>  
>  
> namespace std{
>  
> class CToto{
> public:
>       CToto(double _i): a(_i) {}
>       CToto(): a(0.0) {}
>       double get() const
>             {return a;}
> private:
>        double a;
> };
>  
>  
> std::vector<std::CToto *> aTotoPtrVect;
> aTotoPtrVect.push_back(new std::CToto(1.1));
> aTotoPtrVect.push_back(new std::CToto(2.2));
> aTotoPtrVect.push_back(new std::CToto(3.3));
> aTotoPtrVect.push_back(new std::CToto(4.4));
>  
> std::vector <double> dv(std::distance((aTotoVect.begin(),
> aTotoVect.end());
> std::for_each(aTotoPtrVect.begin(), aTotoPtrVect.end(),
> bll::var(dv)[bll::var(uiIdx)++] = bll::bind(&std::CToto::get,
> bll::_1)); // work fine
>  
> std::valaray <double> dvv(std::distance((aTotoVect.begin(),
> aTotoVect.end());
> std::for_each(aTotoPtrVect.begin(), aTotoPtrVect.end(),
> bll::var(dvv)[bll::var(uiIdx)++] = bll::bind(&std::CToto::get,
> bll::_1)); // do not work
>  

Probably, because BLL does not know about valarray, and doesn't know
what the return type of [] should be.
I haven't tested this, but you can try wrapping
bll::var(dvv)[bll::var(uiIdx)++]

with bll::ret as follows :

bll::ret<double&>(bll::var(dvv)[bll::var(uiIdx)++])

Best, Jaakko Järvi

> Is someone could explain me that ?
>
>  
>
> Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo!
> Messenger
> Téléchargez le ici ! _______________________________________________
> 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