Boost logo

Boost Users :

From: Scott Meyers (usenet_at_[hidden])
Date: 2007-07-22 11:32:40


The following code using Lambda with vector iterators compiles without complaint:

   vector<char> v;
   find_if(v.begin(), v.end(), _1 == 'x');

Ditto for this code, which uses istream_iterators:

   istream_iterator<char> b1(cin);
   istream_iterator<char> e1;
   find_if(b1, e1, _1 == 'x');

But the same code with istreambuf_iterators gets rejected:

   istreambuf_iterator<char> b2(cin);
   istreambuf_iterator<char> e2;
   find_if(b2, e2, _1 == 'x');

Error messages from VC8 and gcc 4.1.1 are below. Am I doing something wrong, is
there a bug in Lambda regarding istreambuf_iterators, or is this a restriction
that I didn't see documented somewhere?

Thanks,

Scott

VC8 says:

lambda.cpp
D:\Apps\Microsoft Visual Studio 8\VC\INCLUDE\algorithm(87) : error C2664: 'bool
boost::lambda::lambda_functor<T>::operator ()<char>(
A &) const' : cannot convert parameter 1 from 'char' to 'char &'

[Instantiation traceback omitted]

gcc 4.1.1. says:

stl_algo.h:188: error: no match for call to '(
         boost::lambda::lambda_functor<
             boost::lambda::lambda_functor_base<
                 boost::lambda::relational_action<boost::lambda::equal_action>
               , boost::tuples::tuple<
                     boost::lambda::lambda_functor<
                         boost::lambda::placeholder<1>
>, const char
>
>
>
     ) (char)'
stl_algo.h: In function 'istreambuf_iterator<char, char_traits<char> >
     __find_if(
         istreambuf_iterator<char, char_traits<char> >
       , istreambuf_iterator<char, char_traits<char> >
       , boost::lambda::lambda_functor<
             boost::lambda::lambda_functor_base<
                 boost::lambda::relational_action<boost::lambda::equal_action>
               , boost::tuples::tuple<
                     boost::lambda::lambda_functor<
                         boost::lambda::placeholder<1>
>, const char
>
>
>, input_iterator_tag
     )':

[Instantiation traceback omitted]


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net