Thanks Joel. What does it mean when you say that arg1 is the state and
arg2 is the point? Also, looking in the phoenix documentation I see
that there is an accumulate version. How would I use that one in my
context?
Thanks,
Christian
On Fri, Oct 31, 2008 at 7:52 PM, Joel de Guzman
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
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users