managarm / frigg

Lightweight C++ utilities and algorithms for system programming
MIT License
56 stars 20 forks source link

Deduplicate parts of code between basic_string and basic_string_view #36

Open qookei opened 2 years ago

qookei commented 2 years ago

Certain basic_string operations (such as comparisons) can be implemented in terms of basic_string_view: e.g.:

bool operator==(const basic_string &other) const {
    return basic_string_view<Char>{_buffer, _length} == basic_string_view<Char>{other._buffer, other._length};
}

We could also add a convenience basic_string::view() method that does the view construction.

Doing this will allow us to more easily prevent bugs like the one fixed by 264af2d2fd57035b4c9eb40c4b40b91731f96003.