namespace std {
// operator<=>により、以下の演算子が使用可能になる (C++20)
template <class CharT, class Traits, class Allocator>
bool
operator>(const basic_string<CharT, Traits, Allocator>& a,
const basic_string<CharT, Traits, Allocator>& b); // (1) C++98
template <class CharT, class Traits, class Allocator>
bool
operator>(const basic_string<CharT, Traits, Allocator>& a,
const basic_string<CharT, Traits, Allocator>& b) noexcept; // (1) C++14
template <class CharT, class Traits, class Allocator>
constexpr bool
operator>(const basic_string<CharT, Traits, Allocator>& a,
const basic_string<CharT, Traits, Allocator>& b) noexcept; // (1) C++20
template <class CharT, class Traits, class Allocator>
bool
operator>(const CharT* a,
const basic_string<CharT, Traits, Allocator>& b); // (2) C++98
template <class CharT, class Traits, class Allocator>
constexpr bool
operator>(const CharT* a,
const basic_string<CharT, Traits, Allocator>& b); // (2) C++20
template <class CharT, class Traits, class Allocator>
bool
operator>(const basic_string<CharT, Traits, Allocator>& a,
const CharT* b); // (3) C++98
template <class CharT, class Traits, class Allocator>
constexpr bool
operator>(const basic_string<CharT, Traits, Allocator>& a,
const CharT* b); // (3) C++20
}