[Comm] Re: Компоновка с STL в gcc3

Прокопьев Евгений =?iso-8859-1?q?john_=CE=C1_rmts=2Edonpac=2Eru?=
Вт Апр 15 08:13:01 MSD 2003


> А, так вы пытаетесь работать с std::basic_string<unsigned char>.
> 
> Надо делать специализацию std::char_traits<unsigned char>.  В
> стандартном C++ <string> должен определять специализации только для
> char и wchar_t - что он и делает в gcc3.  Для общего случая
> определяется только пустышка без реализации.


$ make clean
rm -f *.o requester
$ make
g++    -c -o requester.o requester.cpp
g++    -c -o serial.o serial.cpp
g++    -c -o sulim.o sulim.cpp
sulim.cpp: In member function `void sulim_device::check(byte*, byte*, 
byte*)':
sulim.cpp:70: no matching function for call to 
`std::char_traits<byte>::append(byte*, int)'
sulim.cpp:72: no matching function for call to 
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static 
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned 
int, const _CharT&) [with _CharT = byte]
sulim.cpp:72: `struct std::char_traits<byte>' has no member named `npos'
sulim.cpp:73: no matching function for call to 
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static 
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned 
int, const _CharT&) [with _CharT = byte]
sulim.cpp:73: `struct std::char_traits<byte>' has no member named `npos'
sulim.cpp:78: no matching function for call to 
`std::char_traits<byte>::length()'
/usr/include/c++/3.2.1/bits/char_traits.h:76: candidates are: static 
size_t std::char_traits<_CharT>::length(const _CharT*) [with _CharT = byte]
sulim.cpp:79: no match for `byte_queue& [unsigned int&]' operator
sulim.cpp:84: no matching function for call to 
`std::char_traits<byte>::find(byte*&)'
/usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static 
const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned 
int, const _CharT&) [with _CharT = byte]
sulim.cpp:84: `struct std::char_traits<byte>' has no member named `npos'
make: *** [sulim.o] Ошибка 1

Это случилось после того, как basic_string<unsigned char> я заменил на 
char_traits<unsigned char>.

Собственно вопрос: где искать реализацию для char, чтобы методом 
копировать/вставить/заменить сделать аналог (как-то все это не 
по-человечьи), и где читать:

a) про реализацию стандарта C++ в gcc3
б) про саму стандартную библиотеку C++ (по C маны есть, а тут не 
предусмотрели :( )

-- 
С уважением, Прокопьев Евгений




Подробная информация о списке рассылки community