Just an addition:

Explicit specialization of std templates is legal. So if you _exactly_ know vector types for which your <<-operator should work you can write:

namespace std
{
  template<>
  ostream& operator<< (ostream& os, const vector<MyTypeX>& v)
  {
    copy(v.begin(), v.end(), ostream_iterator<T>(os, ";"));
    return os;
  }
}

By the way there was a big discussion about this on std list and I fluently read the upcoming Standard draft and saw that this paragraph changed. I not any longer sure if this will be allowed with the new standard.


Best Regards,
Ovanes



On Mon, Apr 7, 2008 at 8:14 PM, Steven Watanabe <watanabesj@gmail.com> wrote:
AMDG

Scott McMurray wrote:
> On Sun, Apr 6, 2008 at 5:15 PM, Andy Stevenson
> <andy.stevenson@uk.fujitsu.com> wrote:
>
>> Why doesn't the lexical_cast work below?
>>
>>
>
> Your operator<<'s not in namespace std, so ADL cannot find it.
>
> ( I think that's it, anyways. )

Yes.  It isn't legal to put it in namespace std, though.

In Christ,
Steven Watanabe

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users