boost::format
どういうわけか、で使用できませんboost::lambda
。これが私のコードの(うまくいけば)コンパイル可能な簡略化です:
#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
は期待される出力を生成します - 2つ目
std::for_each
は、数字のない空白のみを出力します
何故ですか ?私は本当によく知らないboost::lambda
ので、ここで明らかなことを見逃しているかもしれません。
ベースの答えを提案しないでくださいstd::copy
:私の実際のコードは機能しませんstd::vector
が、機能しますboost::fusion::vector
(std::for_each
実際にはboost::fusion::for_each
)。