gpt4 book ai didi

c++ - 我如何使用 boost::adaptors::transformed 从模板类和 vector 生成范围?

转载 作者:太空狗 更新时间:2023-10-29 20:59:08 26 4
gpt4 key购买 nike

我问了一个关于使用 lambda 来实现类似的问题,但是 wasn't able to get this working所以我尝试使用仿函数来解决这个问题。从不涉及构建 std::function 的意义上说,这可能更整洁。对象并且更接近example case set out in the documentation .

这是一个简单的设置来说明我的问题:

#include <boost/range/adaptor/transformed.hpp>
#include <vector>

// some structure
template <typename T>
struct MyStruct
{
MyStruct(T t)
{
}
};

template <typename T>
struct Converter
{
using return_type = MyStruct<T>;

return_type operator()(const T& value)
{
return return_type(value);
}
};

int main(int argc, const char* argv[])
{
std::vector<int> vec {1, 2, 3};

auto val = vec | boost::adaptors::transformed(Converter<int>());

return 0;
}

当我尝试编译它时,我收到以下错误消息:

/home/user/packages/boost/mpl/eval_if.hpp:38:31: error: no type named ‘type’ in ‘boost::mpl::eval_if<boost::is_same<boost::use_default,
boost::use_default>, boost::result_of<const Converter<int>(int&)>,
boost::mpl::identity<boost::use_default> >::f_ {aka struct
boost::result_of<const Converter<int>(int&)>}

我不知道该怎么做。我无法在代码中发现任何错误。有什么想法吗?

最佳答案

错误告诉你boost::result_of<const Converter<int>(int&)>没有 type成员。换句话说,函数调用运算符在 const Converter<int> 时不起作用。对象被使用。了解问题后,很容易看出问题出在哪里:

return_type operator()(const T& value) const
// ^^^^^
{
return return_type(value);
}

关于c++ - 我如何使用 boost::adaptors::transformed 从模板类和 vector 生成范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25437768/

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