Yes, it makes sense and would need a similar (or same) interface... return_difference<Point>(point1, point2) would be applied to Cartesian points or to Spherical / Geographic points. For lat-lon it would return a course/distance pair, this way you can add the calculated vector to a point1 and get point2 back. In this case a vector-type is something different than a point-type, more than in cartesian cases.