Член или свободная функция - дело вкуса, и написание отдельных реализаций ==
и !=
кажется мне скучным, подверженным ошибкам (вы можете забыть члена только в одном из двух операторов, и это будетне торопитесь, чтобы заметить), не добавляя ничего с точки зрения эффективности (вызов другого оператора и применение !
имеет незначительную стоимость).
Решение ограничено тем, "лучше ли внедрять operator==
виз operator!=
или наоборот?
По моему мнению, с точки зрения удобства обслуживания / читаемости / эффективности это одно и то же, я бы рекомендовал делать это везде одинаково для обеспечения согласованности.Единственный случай, когда вы хотите использовать один или другой в качестве «базового оператора», - это когда вы знаете, что в типах, содержащихся в вашей структуре, этот оператор работает быстрее, чем его отрицание, но я не знаю, когдаэто может произойти.