On 12/29/2009 02:22 PM, Peter Kümmel wrote:

After the reply to JMarc I also tought about a template solution.
Attached a patch, but it's  tested only with msvc.

Don't you only need the one specialization, if all the others are different?

rh

  LyXErr&  operator<<(LyXErr&  l, void const * t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, char const * t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, char t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, int t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, unsigned int t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, long t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, unsigned long t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, double t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, string const&  t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, docstring const&  t)
-STREAM_OPERATOR(to_utf8(t));
+{ return toStream(l, to_utf8(t)); }
  LyXErr&  operator<<(LyXErr&  l, FileName const&  t)
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, ostream&(*t)(ostream&))
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }
  LyXErr&  operator<<(LyXErr&  l, ios_base&(*t)(ios_base&))
-STREAM_OPERATOR(t)
+{ return toStream(l, t); }

Peter

Reply via email to