dlaczego potrzebuję operatorów porównania w celu zwiększenia pakietu indeksowania wektora Pythona?

Chciałbym udostępnić kod C ++ za pomocą

std::vector<A>

do Pythona. Mój

class A{};

nie ma zaimplementowanego operatora porównania. Kiedy próbuję

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> >());
}

Pojawia się błąd dotyczący operatorów porównania. Jeśli zmienię definicję A na

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

To działa jak urok.

Dlaczego muszę wdrożyć te operatory porównania? Czy jest jakiś sposób na użycievector_indexing_suite bez nich?

questionAnswers(1)

yourAnswerToTheQuestion