Hi,
why does the following code not compile?
---8<---
#include <iostream>
#include
#include
#include <algorithm>
#include <cmath>
int main()
{
using namespace ::boost::lambda;
const boost::array factor = {
1e12,
1e9,
1e6,
1e3,
1,
1e-3,
1e-6,
1e-9,
1e-12,
1e-15
};
boost::array values;
std::transform( factor.begin(), factor.end(),
values.begin(),
std::abs( ret<double>( 1e3 / _1 ) ) );
}
--->8---
si_short.cpp: In function 'int main()':
si_short.cpp:28: error: no matching function for call to 'abs(const
boost::lambda::lambda_functorboost::lambda::divide_action,
boost::tuples::tuple >,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type> > >,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type> > >)'
/usr/include/stdlib.h:691: note: candidates are: int abs(int)
/usr/include/c++/4.2/cstdlib:143: note: long int
std::abs(long int)
/usr/include/c++/4.2/cstdlib:174: note: long long int
__gnu_cxx::abs(long long int)
/usr/include/c++/4.2/cmath:89: note: double std::abs(double)
/usr/include/c++/4.2/cmath:93: note: float std::abs(float)
/usr/include/c++/4.2/cmath:97: note: long double
std::abs(long double)
Thanks,
Olaf