【发布时间】:2010-12-07 21:53:31
【问题描述】:
由于某种原因,我未能在 boost::lambda 中使用 boost::format。这是我的代码的(希望)可编译的简化:
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <boost/assign/list_of.hpp>
#include <boost/format.hpp>
#include <boost/lambda/lambda.hpp>
namespace bl = boost::lambda;
int main()
{
const std::vector<int> v = boost::assign::list_of(1)(2)(3);
std::for_each(v.begin(), v.end(), bl::var(std::cout) << std::setw(10) << bl::_1);
std::for_each(v.begin(), v.end(), bl::var(std::cout) << boost::format("%10d") % bl::_1);
}
- 第一个
std::for_each产生预期的输出 - 第二个
std::for_each只输出没有任何数字的空格
这是为什么呢?我真的不熟悉boost::lambda,所以我可能在这里遗漏了明显的内容。
请不要建议基于std::copy 的答案:我的实际代码不适用于std::vector,但适用于boost::fusion::vector(而std::for_each 实际上是boost::fusion::for_each)。
【问题讨论】:
标签: c++ boost-lambda boost-format