template<class T>
int compare(const T& t) const;
template<class T>
int compare(size_type pos1, size_type n1, const T& t) const;
{ basic_string_view<charT, traits> sv = t; return basic_string_view<charT, traits>(data(), size()).substr(pos1, n1).compare(sv); }
template<class T>
int compare(size_type pos1, size_type n1, const T& t, size_type pos2, size_type n2 = npos) const;
basic_string_view<charT, traits> sv = t; return basic_string_view<charT, traits>( data(), size()).substr(pos1, n1).compare(sv.substr(pos2, n2));
int compare(const basic_string& str) const noexcept;
int compare(size_type pos1, size_type n1, const basic_string& str) const;
int compare(size_type pos1, size_type n1, const basic_string& str,
size_type pos2, size_type n2 = npos) const;
return compare(pos1, n1, basic_string_view<charT, traits>(str), pos2, n2);
int compare(const charT* s) const;
int compare(size_type pos, size_type n1, const charT* s) const;
int compare(size_type pos, size_type n1, const charT* s, size_type n2) const;