I have a function for case insensitive comparison of strings which uses std::lexicographical_compare
with custom comparator.
However i would like to be able to compare strings
, string_views
and const char*
between each other, for maximum convenience and efficiency.
So i was thinking: What if i make a template, std::string
has begin
/end
, std::string_view
has begin
/end
, ... but const char*
doesn't, not even in a form of non-member function.
So it is ok to define own begin
/end
overloads like this
namespace std {
const char * begin(const char* str) { return str; }
const char * end(const char* str) { return str + strlen(str); }
}
so that then i can compare everything with everything by
std::lexicographical_compare(std::begin(a), std::end(a), std::begin(b), std::end(b), icomp );
?
If not, how else could i solve my problem?