Специализация 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;