| Jon Stewart on 15 Aug 2003 18:44:29 -0000 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: [ALACPP] correction to ostream_iterator |
> Cool!
>
> Other random notes:
>
> boost::lambda actually makes the following function compile. Astounding:
>
>
> ostream& operator << (ostream& str, const vector<string> & rhs)
> {
> for_each(rhs.begin(), rhs.end(), str << _1 << "\n");
> return str;
> }
>
>
> HOWEVER, if I change the function to this:
>
> ostream& operator << (ostream& str, const vector<string> & rhs)
> {
> for_each(rhs.begin(), rhs.end(), str << _1 << ends);
> return str;
> }
Wow, I'm a moron today.
ends is NOT what you want. In addition to flushing, it outputs NULL.
As to why it won't compile, it's a template function and I bet that the
lambda black magic delays type deduction, so ends can't figure out that
it's supposed to be templated off of ostream.
But, yeah, you DON'T want std::ends. You're best off with "\n".
Sorry about that.
Jon
--
Jon Stewart Advanced Los Angeles C++
stew1@xxxxxxxxxxx http://www.alacpp.org
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp