| Christopher Smith on 15 Aug 2003 19:40:56 -0000 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: [ALACPP] correction to ostream_iterator |
On Fri, 2003-08-15 at 11:44, Jon Stewart wrote:
> 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.
Yeah, this is basically the problem. The lambda libraries wrap "str <<
_1" into a lambda functor (as the error indicates). Lambda wants type
infrencing, and so does the stl (sometimes templates make it hard to be
completely orthogonal ;-). Lambda is very messy in general.
This will work:
ostream& operator<<(ostream& str, const vector<string>& rhs) {
for_each(rhs.begin(), rhs.end(),
str << _1 << static_cast<ostream&(*)(ostream&)>(endl));
return str;
}
It will also make you sick. ;-)
--
Christopher Smith <x@xxxxxxxx>
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp