Boost logo

Boost Users :

Subject: [Boost-users] [phoenix] accumulate with data member binding
From: Christian Henning (chhenning_at_[hidden])
Date: 2008-10-31 18:15:54


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 <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_bind.hpp>

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'
[snip]

Thanks ahead,
Christian


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