Boost.Lambda и Boost.Function плохо работают с Boost.Array, почему?

У меня проблемы с Boost.

Когда я пытаюсь запустить что-то так просто, как

#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;
}

Я вернусь:

error C2440: 'return' :
cannot convert from 'boost::lambda::detail::unspecified' to 'size_t'

Почему происходит эта ошибка, и как я могу заставить Boost.Lambda делать то, что мне нужно?

(Да, я знаю, что могу использовать Boost.Phoenix и др., Но дело не в этом.)

3

Решение

подстрочный оператор в boost :: lambda поддерживает только следующие типы (из lambda/detail/operator_return_type_traits.hpp моей установки буста 1,53):

A*, A[N], std::map, std::multimap, std::deque, std::vector, std::basic_string, Все остальное становится detail::unspecified, который вы видите в диагностике вашего компилятора.

Чтобы boost.lambda делал то, что вам нужно, вы можете отправить патч на operator_return_type_traits.hpp добавив поддержку boost::array

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]