Is there a difference between defining a global operator that takes two references for a class and defining a member operator that takes only the right operand?

Global:

```
class X
{
public:
    int value;
};

bool operator==(X& left, X& right) 
{
    return left.value == right.value;
};

```

Member:

```
class X
{
    int value;
    bool operator==( X& right) 
    {
        return value == right.value;
    };
}

```