std::basic_string is a template.
std::string is an instantiation of this template, in simplified form (ignoring traits arguments) it boils down to a definition like
Code:
typedef std::basic_string<char> std::string;
std::basic_string::operator== (and thus std::string::operator==) is defined and works as you expect. If MSDN is telling something different, it probably does that to lie about superiority of CString or something along those lines.

Edit: Looks like Paul beat me to an answer.