
Hi all!
I'm using the lambda library to compute the sum of squared
differences, but I have encountered a puzzling problem. I would
really appreciate if someone could explain it to me.
This doesn't compile:
std::inner_product(i1, i1+x, i2, 0.0,
(_1 + _2), (_1*_1)(_1 - _2));
however, this does:
std::inner_product(i1, i1+x, i2, 0.0,
std::plus<double>(), (_1*_1)(_1 - _2));
The compiler message is very voluminous and hard to read. But I think
this part might be of importance, the (double&, double) looks
strange:
/usr/include/c++/3.3/bits/stl_numeric.h:119: error: no match for call
to `(
boost::lambda::lambda_functor
boost::lambda::lambda_functor_base

On Tue, 30 Mar 2004, David Abrahams wrote:
I might be missing something obvious, but i seems right to me. I'm
trying to compute: sum((i1[i] - i2[i])^2). (_1*_1)(_1 - _2) computes
the (i1[i] - i2[i])^2 part, and it seems to work fine. Then the first
binary operator is applied to the result, so I think it's what I
want.
Here is a short program that demonstrates the problem:
#include <iostream>
#include <numeric>
#include
participants (2)
-
Anders Sundman
-
David Abrahams