C++ Boost.Lambda和Boost.Function don';我不能很好地使用Boost.Array,为什么?
我在使用Boost时遇到了非常令人沮丧的问题 当我试着做一些简单的事情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
#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'