【发布时间】:2011-10-02 21:09:06
【问题描述】:
在尝试适应 boost 时,偶然发现了使用 boost::function 和 std::vector 的问题。我正在尝试做一件简单的事情:拥有一个具有类似签名的函数列表,然后将所有这些函数与std::for_each 一起用于示例数据。代码如下:
typedef boost::function<int (const char*)> text_processor;
typedef std::vector<text_processor> text_processors;
text_processors processors;
processors.push_back(std::atoi);
processors.push_back(std::strlen);
const char data[] = "123";
std::for_each(processors.begin(), processors.end(),
std::cout << boost::bind(&text_processors::value_type::operator(), _1, data)
<< "\n"
);
所以,对于for_each,我正在尝试将每个函数应用于样本数据的结果写入标准输出。但它不会像这样编译(一些关于缺少运算符<< 的长消息bind 结果)。
如果我删除流运算符,那么我将获得可编译但无用的代码。诀窍是我想在单个for_each 中进行功能应用和文本输出。我错过了什么?认为使用 lambdas 或类似的东西应该很容易,但无法找出正确的解决方案。
【问题讨论】:
标签: c++ boost boost-bind boost-function