It is actually a shape vector that needs to get round brackets. So better have shape in the function's name.
Move the trailing plus operator to a more general place.
Implemented a return data converter for ND-dimensional std::vector of scalar return types up to 18 dimensions if the out arity is 1.