Design of the VectorSpace
Some notes:
Having a common base class is at odds with inheriting from
IndexableContainerBase. We’d have to templateVectorSpaceon the derived class to haveIndexableContainerBaseimplement it.CRTP for
VectorSpaceis fine if we never need aVectorSpaceobject. Would we want a property type like:BraKet<VectorSpace, Operator, VectorSpace>vs sayBraKet<AOs, Operator, AOs>? The former is useful for avoiding a combinatorial explosion in property types, e.g.BraKet<MOs, Operator, AOs>andBraKet<AOs, Operator, MOs>.