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?