Использование boost :: format в boost :: lambda

По какой-то причине я не могу использовать 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 дает ожидаемый результат
  • Второй std :: for_each выводит только пробелы без любое число

Почему? Я действительно не знаком с boost :: lambda , поэтому я могу упустить очевидное здесь.

Пожалуйста, не предлагайте ответы на основе std :: copy : мой фактический код делает не работает с std :: vector , но с boost :: fusion :: vector std :: for_each фактически является boost :: fusion :: for_each ).

5
задан icecrime 7 December 2010 в 21:53
поделиться