Специализация std::basic_string

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

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

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

1 ответ

Решение

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

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

typedef std::basic_string<CustomChar> CustomString;
Другие вопросы по тегам