char_traits patch, round two
Gabriel Dos Reis
gdr@integrable-solutions.net
Mon Aug 12 04:53:00 GMT 2002
Andreas Jaeger <aj@suse.de> writes:
| Benjamin Kosnik <bkoz@redhat.com> writes:
|
| > ..still pending. There are some issues left to resolve: hopefully
| > these will fall into place after a good nights sleep...
|
| Since this patch is on the gcc 3.2 branch, I get now errors like:
| ../src/.libs/libid3.so: undefined reference to `std::char_traits<unsigned char>::move(unsigned char*, unsigned char const*, unsigned long)'
Weird. Where is that symbol referenced from?
| > 2002-07-28 Benjamin Kosnik <bkoz@redhat.com>
| > Gabriel Dos Reis <gdr@nerim.net>
| >
| > XXX char_traits vs. other _traits
| > XXX money_ bits
| > XXX num_get/num_put bits
| > XXX testsuites
| > * include/bits/char_traits.h: Remove generic definitions.
|
| [...]
|
| The final ChangeLog contains:
| * testsuite/21_strings/capacity.cc: Add char_traits specializations.
|
| Do I need to add those specializations now everywhere?
For anything other than char or wchar_t, the pedantical answer is
yes. Furtermore, if the template-argument value for charT is not a
user-defined-type, then pedantically speaking you can't add a
specialization for char_traits<> in std:: -- which basically makes
char_traits<> useless in its current form, but I guess that is another
debate. However, I suspect GCC won't reformat your hard drive just
because you added the specialization char_traits<unsigned char> in
std:: :-).
| What's the right way to fix this problem?
I'm curious: How did you manage to reference std::char_traits<unsigned
char>::move()? I'm asking that because, depending on the context you
would have to specialize other things as well...
-- Gaby
More information about the Libstdc++
mailing list