由于某些原因,我无法在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
)。
boost::lambda::var
只有在没有参数是lambda表达式时才是必要的。我旨在使用boost::lambda
实现简洁明了的语法:( 很遗憾。 - icecrime