operator== be a member function or a friend function,?
<p>Is there a benefit or it is mandatory to make <code>operator==</code>, <code>operator&lt;</code>, <code>operator&gt;</code>, <code>operator&lt;&lt;</code>, <code>operator&gt;&gt;</code>, <code>!=</code>, <code>&gt;=</code>, ... as friend and not methods of a class?</p>

<p>I haven't found a good text that explains why go friends way only...</p>

<p>I have a good use case if <code>C1 x; C2 y; C3 z;</code> and I have <code>C3&amp; operator+(C1&amp; , C2&amp;)</code> as a friend in C1 and C2, i.e when the classes are different, BUT the question is why for the same class.</p>
