Зачем мне нужны операторы сравнения в пакете индексации векторов boost Python?

Я хотел бы предоставить код C++ с

std::vector<A>

для python. В моем

class A{};

не реализован оператор сравнения. Когда я пытаюсь

BOOST_PYTHON_MODULE(libmyvec)
{
  using namespace boost::python;
  class_<A>("A");
  class_<std::vector<A> >("Avec")
    .def(boost::python::vector_indexing_suite<std::vector<A> >());
}

, я получаю ошибку об операторах сравнения. Если я изменю определение A на

class A {
public:
  bool operator==(const A& other) {return false;}
  bool operator!=(const A& other) {return true;}
};

, это сработает как шарм.

Зачем мне нужно реализовывать эти операторы сравнения? Есть ли способ использовать vector_indexing_suiteбез них?

6
задан Hans 21 May 2012 в 06:56
поделиться