gpt4 book ai didi

c++ - Boost.Lambda 和 Boost.Function 不能很好地与 Boost.Array 配合使用,为什么?

转载 作者:太空狗 更新时间:2023-10-29 21:44:33 25 4
gpt4 key购买 nike

我在使用 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 等,但这不是问题的重点。)

最佳答案

boost::lambda 中的下标运算符仅支持以下类型(来 self 安装的 boost 1.53 的 lambda/detail/operator_return_type_traits.hpp):

A*, A[N], std::map, std::multimap, std::dequestd::vectorstd::basic_string。其他一切都变成了 detail::unspecified,您可以在编译器诊断中看到它。

要使 boost.lambda 执行您需要的操作,您可以向 operator_return_type_traits.hpp 提交补丁,添加对 boost::array 的支持

关于c++ - Boost.Lambda 和 Boost.Function 不能很好地与 Boost.Array 配合使用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19803552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com