The confusion comes from mixing two (very different) kinds of objects. Things like Polytope<Rational>, SimplicialComplex, Graph, ... are big objects which live on the Perl side with properties and rules and such. But there are also small objects which live on the C++ side, e.g., Matrix<Rational>, Ve...