Sobrecarga del operador: ¿función miembro vs. función no miembro?

Leí que un operador sobrecargado declarado como función miembro esasimétrico porque solo puede tener un parámetro y el otro parámetro pasado automáticamente es elthis puntero. Por lo tanto, no existe un estándar para compararlos. Por otro lado, el operador sobrecargado declarado comofriend essimétrico porque pasamos dos argumentos del mismo tipo y, por lo tanto, se pueden comparar.

Mi pregunta es que cuando todavía puedo comparar el valor de un puntero con una referencia, ¿por qué se prefieren los amigos? (el uso de una versión asimétrica da los mismos resultados que la simétrica) ¿Por qué los algoritmos STL usan solo versiones simétricas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta