Leí que un operador sobrecargado declarado como función miembro es asimétrico porque solo puede tener un parámetro y el otro parámetro pasado automáticamente es el this
puntero. Entonces no existe un estándar para compararlos. Por otro lado, el operador sobrecargado declarado como a friend
es simé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 l 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?