
Ovanes,
Thanks for this.
I get the idea about 'just because it compiles doesn't mean it is std
conformant'.
I guess the thread has me curious about the extensibility of the ostream<<
or the lexical_cast for that matter that depends on ostream<< extensibility
being.
I feel I must be missing something here that the std authors had in mind.
Andy
_____
From: boost-users-bounces@lists.boost.org
[mailto:boost-users-bounces@lists.boost.org] On Behalf Of Ovanes Markarian
Sent: 07 April 2008 22:43
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] [boost][lexical_cast] simple example doesn't
workwith vector<T>
Yes, that's true...
the std operator << is defined as:
template
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.
There has to be template to specialize. The std library doesn't have an overload of operator<< that matches std vector. Specialization can't change that. In Christ, Steven Watanabe _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users