C++ Boost.Lambda和Boost.Function don';我不能很好地使用Boost.Array,为什么?

C++ Boost.Lambda和Boost.Function don';我不能很好地使用Boost.Array,为什么?,c++,boost,boost-function,boost-lambda,C++,Boost,Boost Function,Boost Lambda,我在使用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::f

我在使用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;
}
为什么会发生此错误,以及如何使Boost.Lambda满足我的需要?
(是的,我知道我也可以使用Boost.Phoenix等,但这不是问题的重点。)

Boost::lambda中的下标运算符仅支持以下类型(我安装的Boost 1.53的
lambda/detail/operator\u return\u type\u traits.hpp
):

A*
A[N]
std::map
std::multimap
std::deque
std::vector
std::basic_string
。其他所有内容都将变成
detail::unspecified
,您可以在编译器诊断中看到


要使boost.lambda满足您的需要,您可以向
operator\u return\u type\u traits.hpp
添加对
boost::array
@user1095108:使用具有
boost::lambda::\u 1[boost::lambda::\u 2]效果的boost.lambda:lambda制作lambda,我永远也想不到他们会对它进行特殊处理+谢谢你的指点。
error C2440: 'return' :
    cannot convert from 'boost::lambda::detail::unspecified' to 'size_t'