operator==

template<class E, class T, class A>
    bool operator==(
        const basic_string<E, T, A>& lhs,
        const basic_string<E, T, A>& rhs);
template<class E, class T, class A>
    bool operator==(
        const basic_string<E, T, A>& lhs,
        const E *rhs);
template<class E, class T, class A>
    bool operator==(
        const E *lhs,
        const basic_string<E, T, A>& rhs);

Each template function overloads operator== to compare two objects of template class basic_string. All effectively return basic_string<E, T, A>(lhs).compare(rhs) == 0.

See the related sample program.