Re: glibmm-2.16.4 compile error
- From: Murray Cumming <murrayc murrayc com>
- To: Chris Vine <chris cvine freeserve co uk>
- Cc: gtkmm-list gnome org
- Subject: Re: glibmm-2.16.4 compile error
- Date: Wed, 13 Aug 2008 15:38:16 +0200
On Wed, 2008-08-13 at 12:57 +0100, Chris Vine wrote:
> On Wed, 13 Aug 2008 12:43:32 +0200
> Andreas Haumer <andreas xss co at> wrote:
> > In the glibmm sources there are some headers with typdefs using
> > "unsigned char", for example in
> >
> > ./glib/glibmm/ustring.h
> > ./glib/glibmm/value_basictypes.h
> >
> > Perhaps one of those types is (directly or indirectly) used
> > as character type in the failing program and so is triggering
> > the use of char_traits<unsigned char> somewhere?
> >
> > The "unsigned char" specialization for the char_traits is only
> > available for the char and wchar_t types (according to the docs
> > and e.g. <http://gcc.gnu.org/ml/libstdc++/2002-08/msg00098.html>)
>
> There are some casts to unsigned char in the files you mention but I
> cannot see any typedefs. Nothing in them looks odd.
>
> char_traits is only required to be specialised for the char and
> wchar_t types, which does not include unsigned char. That is why you
> are getting the error. I strongly suspect it is something in your
> set-up but it may possibly be your compiler or glibmm.
If anyone has a patch that helps anyone, and if it doesn't break
anything else, then that would be welcome, of course.
> Someone else has suggested the error only arises on compiling the
> examples, in which case I suggest doctoring the makefile.
>
> If yours is a home-made linux system, I should update your compiler for
> the purposes of compiling the kernel, apart from anything else.
>
> Chris
>
> An aside: People sometimes think that there are two narrow character
> types in C and C++, namely signed char and unsigned char. This is
> wrong - in C/C++ there are three, namely char, signed char and unsigned
> char. char may be signed (whether it is signed or unsigned is
> implementation defined), but if it is, it is still a different type
> from signed char. This is most likely to show up either when assigning
> to pointers or when instantiating templates, and char_traits is a
> templated struct.
>
--
murrayc murrayc com
www.murrayc.com
www.openismus.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]