user-defined types and basic_string
Benjamin Kosnik
bkoz@redhat.com
Thu Aug 29 09:44:00 GMT 2002
> I was unable to implicitly create characters from integers :
>
> basic_string<char_type> theString;
> theString.append(0x20);
> theString.append('o');
>
> No amount of casting was able to fix this, and constructors in character<T>
> will not work because then it isn't Plain Old Data (POD??). With a
> constructor it can't be used in a union, among other problems.
Right. This is what is lame about user-defined types being aggregates.
> I ended up not using templates at all, instead just defining char_traits as:
>
> namespace std
> {
> struct char_traits<unsigned short>
> {
> typedef unsigned short char_type;
> .
> .
> .
>
> };
> };
>
> Unless you know of an 'elegant' way to go from an int to a character, this
> will have to do.
Nope.
What you are doing (I'm assuming specializing std::char_traits<int>,
instantating std::basic_string<int>), is undefined but I believe it
should be defined to be something useful.
-benjamin
More information about the Libstdc++
mailing list