Czytałem, że przeciążony operator zadeklarowany jako funkcja członkowska jest asymetryczny, ponieważ może mieć tylko jeden parametr, a drugim parametrem przekazywanym automatycznie jest this
wskaźnik. Nie ma więc standardu, aby je porównać. Z drugiej strony przeciążony operator zadeklarowany jako a friend
jest symetryczny, ponieważ przekazujemy dwa argumenty tego samego typu, dzięki czemu można je porównać.
Moje pytanie jest takie, że jeśli nadal mogę porównać wartość l wskaźnika z referencją, dlaczego preferowani są przyjaciele? (użycie wersji asymetrycznej daje takie same wyniki, jak wersja symetryczna) Dlaczego algorytmy STL używają tylko wersji symetrycznych?