Boost logo

Boost Users :

Subject: Re: [Boost-users] [BLL] Problem with print vector elements.
From: Thomas Heller (thom.heller_at_[hidden])
Date: 2012-04-12 05:50:23


On 04/12/2012 11:06 AM, mik wrote:
> Hi,
>
> I'm trying to use thew BLL for the first time and I've the following
> program:
>
> class Date
> {
> public:
> Date(long d): _lDate(d) {}
> long getDate() const { return _lDate; }
> [...]
> private:
> long _lDate;
> };
>
> std::ostream& operator<<(std::ostream&s, const Date&x)
> {
> [...]
> }
>
> struct C
> {
> C(long d): date(d) {}
> Date date;
> };
>
> int main()
> {
> const C c(46000);
> std::cout<< boost::bind(&C::date, boost::lambda::_1)(c)<< std::endl;
>
> std::vector<C> cont(1, C(46000));
> std::for_each(cont.begin(), cont.end(), std::cout<<
> boost::bind(&C::date, boost::lambda::_1));
>
> return 0;
> }
>
> The first std::cout is ok. But for the second one nested int the for_each I
> get this message error:
>
> error C2679: binary '<<' : no operator found which takes a right-hand
> operand of type 'boost::_bi::bind_t<R,F,L>' (or there is no acceptable
> conversion)
> with
> [
> R=const Date&,
> F=boost::_mfi::dm<Date,C>,
> L=boost::_bi::list1<boost::arg<1>>
> ]
> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\ostream(653):
> could be 'std::basic_ostream<_Elem,_Traits> &std::operator
> <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const
> char *)' [found using argument-dependent lookup]
> with
> [
> _Elem=char,
> _Traits=std::char_traits<char>
> ]
>
> Can you help me?

To be honest, I am surprised that the first cout expression works.
Boost.Lambda placeholders don't match well with Boost.Bind.
If you meant boost::lambda::bind instead of boost::bind, the for_each
should work, assuming you included the header defining the operator
overloads for BLL expressions.
Assuming that you really meant boost::bind, and instead of ::_1 you
accidently wrote boost::lambda::_1, you are in trouble. Boost.Bind only
overloads the following operators: !, ==, !=, <, <=, >, >=, &&, ||.
Which is the reason your program didn't compile.
If you have more problems, please provide a complete testcase (i.e. with
includes etc.)

>
> Thank you,
> Mirko
>
>
> **
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users


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