Christian Henning wrote:
Hi there, the following snippet doesn't compile which surprises me a little. Could somebody tell what's wrong?
#include <algorithm> #include <vector> #include <numeric>
#include
#include #include using namespace boost::phoenix; using namespace boost::phoenix::arg_names; using namespace std;
struct point { double _prob; double _x; };
int _tmain(int argc, _TCHAR* argv[]) { std::vector< point > d;
double sum_prob = std::accumulate( d.begin() , d.end() , 0.0 , bind( &point::_prob, arg1 ) );
return 0; }
I'm using Visual Studio 2005. This is the error I'm getting:
error C2296: '.*' : illegal, left operand has type 'double'
Rightly so. arg1 is the state. arg2 is the point. You might want to try: bind( &point::_prob, arg2 ) For example, bind( &point::_prob, arg2 ) + arg1 adds all _prob(s) HTH. Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net