2008/11/5 Eric MALENFANT <Eric.Malenfant@sagem-interstar.com>
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;
 
Indeed, thanks!
 
I was just about to answer that this does not solve the general problem of using placeholders as indices as this assumes the array is a left-value. Then I tested and realized that the const version of my original code:
 
int x = bind(static_cast<std::vector<int>::const_reference (std::vector<int>::*)(std::vector<int>::size_type) const>(&std::vector<int>::operator[]), a, _1)(0);
 
actually compiles and works. If anyone is knowledgeable about this I'd glad to hear an explanation.
 
Thanks,
 
P.