I'm running into extremely frustrating problems with Boost.
When I try running something as simple as
#include <boost/function.hpp>
#include <boost/lambda/core.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/array.hpp>
int main()
{
boost::function<size_t(boost::array<size_t, 1>, size_t)> f =
boost::lambda::_1[boost::lambda::_2];
return 0;
}
I get back:
error C2440: 'return' :
cannot convert from 'boost::lambda::detail::unspecified' to 'size_t'
(Yes, I'm aware I can use Boost.Phoenix et al. too, but that's not the point of the question.)
subscript operator in boost::lambda supports only the following types (from lambda/detail/operator_return_type_traits.hpp of my install of boost 1.53):
A*, A[N], std::map, std::multimap, std::deque, std::vector, std::basic_string. Everything else becomes detail::unspecified, which you see in your compiler diagnostic.
To make boost.lambda do what you need, you can submit a patch to operator_return_type_traits.hpp adding support for boost::array
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With