Как реализовать операторы равенства C ++ (in) для агрегатных структур?

Иногда у меня есть такие структуры, как эта -

struct aggregate1 {
  std::string name;
  std::vector<ValueT> options;
  size_t foobar;
  // ...
};

- где (in) равенство просто определяется как (in) равенство всех членов : lhs_name == rhs_name && lhs_options == rhs_options && lhs_foobar == rhs_foobar .

Какой "лучший" способ реализовать это? (Лучше всего, как в: (Время выполнения-) Эффективность, ремонтопригодность, читаемость)

  • operator == в терминах operator! =
  • operator! = в терминах operator = =
  • Отдельные реализации для == и ! =
  • В качестве члена или в качестве свободных функций?

Обратите внимание, что этот вопрос касается только операций (не) равенства, в качестве сравнения ( <, <= , ...) не имеет большого смысла для таких агрегатов.

10
задан Martin Ba 14 February 2011 в 11:30
поделиться