Boost logo

Boost :

Subject: Re: [boost] [RangeEx] Using istream_range?
From: Robert Jones (robertgbjones_at_[hidden])
Date: 2008-10-22 08:59:43


Hi Neil

Another one for you....

This may not be entirely due to your lib, but it is a fairly obvious
use-case.
This code works fine....

#include <iostream>
#include <iterator>
#include <list>
#include "boost/range.hpp"
#include "boost/range/istream_range.hpp"
#include "boost/range/algorithm.hpp"
#include "boost/range/adaptors.hpp"
#include "boost/lambda/lambda.hpp"

using namespace boost;
using namespace boost :: lambda;

int times_two( int i ) { return ( _1 * 2 )( i ); }

int main( )
{
  int vals[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

  copy(
      vals | adaptors :: transformed( times_two ),
      std :: ostream_iterator< int >( std :: cout, "\n" ) );
  return 0;
}

But this code doesn't....

#include <iostream>
#include <iterator>
#include <list>
#include "boost/range.hpp"
#include "boost/range/istream_range.hpp"
#include "boost/range/algorithm.hpp"
#include "boost/range/adaptors.hpp"
#include "boost/lambda/lambda.hpp"

using namespace boost;
using namespace boost :: lambda;

int times_two( int i ) { return ( _1 * 2 )( i ); }

int main( )
{
  int vals[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

  copy(
      vals | adaptors :: transformed( _1 * 2 ),
      std :: ostream_iterator< int >( std :: cout, "\n" ) );
  return 0;
}

I have sent you the full error privately as Boost bounced the file due to it
being too large!

Cheers, Rob.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk