
I am trying to use boost::lambda's placeholders as array indices. What I tried boils down to this: [snip] 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