специализация std :: basic_string - PullRequest
4 голосов
/ 01 июля 2011

Мне нужно переопределить только функцию длины из std :: basic_string, потому что она не подходит для пользовательского типа char на конкретной платформе.Это текущее объявление, скажем, для CustomString

typedef STL::basic_string<CustomChar, STL::char_traits<CustomChar>, STL::allocator<CustomChar> > CustomString;

Мне нужно иметь класс, который ведет себя как CustomString, но с измененной функцией длины.

1 Ответ

7 голосов
/ 01 июля 2011

Для этого нужно специализировать структуру std::char_traits и переопределить ее функцию static size_t length(const char_type* s);.

Тогда вам даже не нужно указывать все параметры шаблона при создании экземпляраbasic_string.Следующего определения должно быть достаточно:

typedef std::basic_string<CustomChar> CustomString;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...