Boost logo

Boost Users :

Subject: Re: [Boost-users] [Lambda] Using placeholders as array indices
From: Eric MALENFANT (Eric.Malenfant_at_[hidden])
Date: 2008-11-05 09:33:12

> I am trying to use boost::lambda's placeholders as array
> indices. What I tried boils down to this:
> std::vector<int> a(10,0);
> bind(static_cast<std::vector<int>::reference
> (std::vector<int>::*)(std::vector<int>::size_type)>(&std::vect
> or<int>::operator[]), a, _1)(0) = 1; }
> </code>
> But I get the following error (Visual C++ 2008 Express Edition, boost
> 1.35.0):
> error C2665: 'boost::lambda::function_adaptor<Func>::apply' :
> none of the 2 overloads could convert all the argument types
> What part am I missing?

I did not try to understand why what's written above does not work, but it seems to me that writing the lambda as this would produce the intended result:
  (var(a)[_1])(0) = 1;

Éric Malenfant
There are only two kinds of programming languages: those people always bitch about and those nobody uses.
- Bjarne Stroustrup

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at