On Thu, Nov 01, 2007 at 06:05:04PM +0100, Abdelrazak Younes wrote:

> Juergen Spitzmueller wrote:
> > Enrico Forestieri wrote:
> > 
> >> It also doesn't work on Windows and FreeBSD, for example. I think it
> >> would be embarrassing explaining it, as this would imply recognizing a
> >> basic ignorance about C++, and this should not be the case.
> > 
> > You refer to my first or my second patch? If to the latter, please don't
> > hesitate. I'm well aware of my basic ignorance about C++. If you agree my
> > second patch would be a reasonable and working compromise, I'd propose to
> > apply this, because it is safer than yours, IMHO.
> 
> I apply a combination of your two patch Juergen. Enrico might think this 
> is due to ignorance about C++ but this is just ignorance about a bug in 
> the odocstream.

Yea, a bug in C++. LOL!

> See comment in docstream.h:
> 
> /** Base class for UCS4 output streams.
>      If you want to output a single UCS4 character, use \code
>      os.put(c);
>      \endcode, not \code
>      os << c;
>      \endcode . The latter will not output the character, but the code point
>      as number. This is because we can't overload operator<< (our character
>      type is not a real type but a typedef). Narrow characters of type char
>      can be output as usual.
>   */
> typedef std::basic_ostream<char_type> odocstream;
> 
> 
> Enrico's patch might be needed for platform were char is unsigned, 

It is not.

> dunno. But I maintain the assertion is correct.

Your opinion, of course.

> We should also put an 
> assertion here:
> 
> inline
> odocstream & operator<<(odocstream & os, char c)
> {
>      os.put(c);
>      return os;
> }

I give up.

-- 
Enrico

Reply via email to