$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: gast128 (gast128_at_[hidden])
Date: 2007-06-26 04:37:50
Mojmir Svoboda <mojmir.svoboda <at> logicacmg.com> writes:
I was intrigued by this problem, but I couldn't solve it myself. I think it 
has to do with the tuple (user defined types, overloaded operator<<, Bll).
consider:
typedef int                         value_t;
typedef std::vector<value_t>        vect_t;
typedef std::pair<value_t, value_t> value_t_pair;
typedef std::vector<value_t_pair>   vect2_t;
value_t      make_value_t     (value_t v) { return v; }
value_t_pair make_value_t_pair(value_t v) { return std::make_pair(v, v); }
std::ostream& operator<<(std::ostream& ros, const value_t_pair&) 
{ 
   return ros; 
}
void Foo()
{
   vect_t vec;
 
   //compiles
   std::for_each(vec.begin, vec.end(), 
                 std::cout << boost::lambda::bind(&make_value_t, 
boost::lambda::_1));
   //does not compile
   std::for_each(vec.begin, vec.end(), 
                 std::cout << boost::lambda::bind(&make_value_t_pair, 
boost::lambda::_1));
   //does also not compile
   std::for_each(vec.begin, vec.end(), 
                 std::cout << boost::lambda::bind<value_t_pair>
(&make_value_t_pair, boost::lambda::_1));
}
But maybe a Bll guru can give a better answer.