basic_string<unsigned char> & gcc < 3.4
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 09:46
Оценка: 1 (1)
Доброго дня.

Столкнулся вот с проблемкой, поискал по сайту, похожее было в basic_string
Автор:
Дата: 13.02.03
, но там другой компилятор.

А дело было так. Использовал я basic_string<unsigned char> с компиляторами Visual C++ (7.1 и 6.0) без проблем, но вот когда потребовалось код в Linux портировать, то при линковке стали вываливаться ошибки о неопределенном символе std::char_traits<unsigned char>::bla-bla-bla. Причем проявлялось это на gcc 3.2.* и gcc 3.3.*. Как оказалось, в libstdc++ были специализации std::char_traits для char и wchar_t (согласно стандарту, 21.1.3), но вот реализации char_traits для других типов не было вообще! Из-за этого компиляция проходила, а линковка нет. Вроде как эта штука была поправлена в gcc 3.4 (если честно, то я не знаю, как нумеруются libstdc++ и можно ли libstdc++ обновлять независимо от gcc, что стоит в дистрибутиве, то и приходится использовать).

В результате, в своем заголовочном файле я сделал специализацию std::char_traits для unsigned char. Все заработало. И под VC так же.

Может кому-то эта информация окажется полезной.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.