std :: basic_string专门化

Mir*_*pas 4 c++ templates

我需要只覆盖std :: basic_string中的length函数,因为它对于特定平台上的自定义char类型不正确.这是CustomString的当前声明

typedef STL::basic_string<CustomChar, STL::char_traits<CustomChar>, STL::allocator<CustomChar> > CustomString;
Run Code Online (Sandbox Code Playgroud)

我需要有一个行为CustomString的类,但更改了length函数.

Kon*_*lph 7

您需要专门化std::char_traits结构并覆盖其static size_t length(const char_type* s);功能才能执行此操作.

然后,在实例化a时甚至不需要指定所有模板参数basic_string.以下定义应该足够了:

typedef std::basic_string<CustomChar> CustomString;
Run Code Online (Sandbox Code Playgroud)