|
Boost Users : |
From: Robert Dailey (rcdailey_at_[hidden])
Date: 2008-03-21 20:40:45
Hi,
I have defined a global overloaded operator<<. I want to use this overloaded
operator in std::for_each(), but it must be properly deduced since there are
many global overloads for this operator. For example:
class Stream
{
// This is an abstract class (cannot instantiate)
};
Stream& operator<< ( Stream& stream, char data )
{
stream.write( data );
return stream;
}
Stream& operator<< ( Stream& stream, std::vector<char>& buffer )
{
using namespace boost::lambda;
std::for_each( buffer.begin(), buffer.end(), var( stream ) << _1 ); //
This lambda should simply be binding to the overloaded operator<< above,
right?
return stream;
}
When I compile this, MSVC9 tells me:
1>c:\program files\microsoft visual studio 9.0\vc\include\algorithm(29) :
error C2064: term does not evaluate to a function taking 1 arguments
1> class does not define an 'operator()' or a user defined conversion
operator to a pointer-to-function or reference-to-function that takes
appropriate number of arguments
What am I doing wrong? Do I need to be using boost bind instead? If so, how
can I use boost.bind to map a global operator? Will it correctly deduce
which overload to use?
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