Consider the following class which contains a conversion function for the std::string type:
class SomeType
{
    public:
    SomeType(char *value)
    {
        _str = value;
    }
    operator std::string()
    {
        return std::string(_str);
    }
    private:
    char *_str;
};
The following snippet fails to compile with the error: no operator "==" matches these operands
int main(int argc, char* argv[])
{
    SomeType a("test");
    if (a == std::string("test")) // ERROR on this line
    {
        int debug = 1;
    }
    return 0;
}
I realize I could define an operator== method that accepts std::string operand, but why doesn't the conversion function work?