Почему я должен перегружать оператор == в типах POD?

У меня есть структура, определенная следующим образом:

struct Vec3 {
float x, y, z;
}

Когда я попытался использовать std::uniqueна std::vector, я столкнулся с эта ошибка:

Описание Тип расположения пути к ресурсу сначала нет совпадений для «operator==» в «_ ». _gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* с _Iterator = Vec3*, _Container = std::vector > == _ далее. _gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* with _Iterator = Vec3*, _Container = std::vector >' ModelConverter, строка 4351, внешнее расположение: /usr/include/c++/4.4.6/bits/ stl_algo.h C/C++ Проблема

Я понимаю необходимость наивности компилятора в в операторах равенства и других (в этом случае * почти наверняка не будет тем, что я имею в виду), но это вопрос политики или есть техническая причина, о которой я не знаю? Есть оператор присваивания по умолчанию, так почему же нет оператора равенства по умолчанию?

16
задан 25 March 2012 в 01:11
поделиться