Warum brauche ich Vergleichsoperatoren in der Boost Python Vector Indexing Suite?

Ich möchte C ++ - Code mit einem

std::vector<A>

zu python. Meine

class A{};

hat keinen Vergleichsoperator implementiert. Wenn ich es versuche

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

Ich erhalte eine Fehlermeldung zu Vergleichsoperatoren. Wenn ich die Definition von A in ändere

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

Es wirkt wie ein Zauber.

Warum muss ich diese Vergleichsoperatoren implementieren? Gibt es eine Möglichkeit, die zu verwendenvector_indexing_suite ohne sie?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage