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
}