Does anyone have an idea why the following doesn't compile:
using lambda::_1;
using lambda::_2;
boost::function<double (const boost::array<double, 2>&)> f = lambda::ret<double>(_1[0] * _1[1]);

But the following does as a double-check:
using lambda::_1;
using lambda::_2;
boost::function<double (const double&, const double&)> f2 = lambda::ret<double>(_1 * _2);

Thanks,
Jesse