Перестановка C ++ в std :: basic_string с различными char_traits - PullRequest
0 голосов
/ 05 января 2019

Обыскал это, но лучшим результатом было только копирование строки.

Учитывая этот простой фрагмент:

struct custom_string_traits: std::char_traits<char> {
    static bool eq(char c, char d) { ... }
    static bool lt(char c, char d) { ... }
    ...
};
typedef std::basic_string<char,custom_string_traits> my_string;

как мне выполнить такие операции, как

std::string foo = "baz";
my_string bar = "qux";
x::swap(foo, bar);
/*  OR  */
foo = std::move(bar);

Я хочу оптимизировать свою текущую процедуру:

std::string foo = "baz";
my_string bar = "qux";
my_string next(foo.c_str(), foo.size());
foo.assign(bar.c_str(), bar.size());

Посмотрел C ++ std :: basic_string / char_traits специализация ; не уверен, как это интерпретировать.

...