namespace std{namespace experimental{inlinenamespace fundamentals_v1{ // 7.2, Class template basic_string_viewtemplate<class CharT,class Traits= char_traits<CharT>>class basic_string_view; // 7.9, basic_string_view non-member comparison functionstemplate<class CharT,class Traits>constexprbool operator==(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;template<class CharT,class Traits>constexprbool operator!=(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;template<class CharT,class Traits>constexprbool operator<(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;template<class CharT,class Traits>constexprbool operator>(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;template<class CharT,class Traits>constexprbool operator<=(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;template<class CharT,class Traits>constexprbool operator>=(basic_string_view<CharT, Traits> x, basic_string_view<CharT, Traits> y)noexcept;// /* see description */, sufficient additional overloads of comparison functions // 7.10, Inserters and extractorstemplate<class CharT,class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, basic_string_view<CharT, Traits> str); // basic_string_view typedef namestypedef basic_string_view<char> string_view;typedef basic_string_view<char16_t> u16string_view;typedef basic_string_view<char32_t> u32string_view;typedef basic_string_view<wchar_t> wstring_view; }// namespace fundamentals_v1}// namespace experimental // 7.11, Hash supporttemplate<class T>struct hash;template<>struct hash<experimental::string_view>;template<>struct hash<experimental::u16string_view>;template<>struct hash<experimental::u32string_view>;template<>struct hash<experimental::wstring_view>; }// namespace std