Я читал, что перегруженный оператор, объявленный как функция-член, является асимметричным, потому что он может иметь только один параметр, а другой параметр, передаваемый автоматически, является this
указателем. Так что не существует стандарта для их сравнения. С другой стороны, перегруженный оператор, объявленный как a, friend
является симметричным, потому что мы передаем два аргумента одного и того же типа и, следовательно, их можно сравнивать.
У меня вопрос: когда я все еще могу сравнивать lvalue указателя со ссылкой, почему предпочтение отдается друзьям? (использование асимметричной версии дает те же результаты, что и симметричная) Почему алгоритмы STL используют только симметричные версии?