C++ 在boost-lambda中使用三元运算符

C++ 在boost-lambda中使用三元运算符,c++,boost,C++,Boost,我该如何做以下工作 vector<int> vec(100); boost::iota(vec, 0); static int counter = 0; boost::for_each(vec, cout << constant(left) << constant(setw(5)) << _1 * 2 << (++var(counter) % 5 == 0 ? "\n" : " ")); 您是否真的被如此

我该如何做以下工作

vector<int> vec(100);
boost::iota(vec, 0);
static int counter = 0;
boost::for_each(vec, 
    cout << constant(left) << constant(setw(5)) 
         << _1 * 2 << (++var(counter) % 5 == 0 ? "\n" : " "));

您是否真的被如此古老的编译器所困扰,以至于需要使用boostlambdas而不是real(编译器支持的)lambdas?另外,我甚至可以说,
for_each(x,cout…
是一种反模式。使用
if_then_else_return
error: value of type '...'  is not contextually convertible to 'bool'