Something like Point(elem->node_ptr(0) - elem->node_ptr(1)) feels like (one mistake away, no warnings) it should give the point for the 0th node but it ends up doing pointer to Real to Point instead.
There are so many mistakes we can make in vector math with it too
A nice thing with use C++ is to have a strongly typed language. Having Point(Real) imo loses this advantage
Imagine if we had Tensor(Point)