
Hi,
So, we can envision two different tacks to take with this point concept. One is to make one point concept for all types of points (2D, 3D, homogeneous points, 11D simplified string theory points, etc.) or we can have a separate concept for each conceptual type of point and separate traits classes for each. We can have inheritance between concepts, 3D point could inherit from 2D point concept, for instance.
I'd be inclined to prefer the first solution, because I just don't see any advantage in the second one. Do you have some strong arguments in favor of the second approach?
Having free functions and meta functions instead of traits might lead us in the direction of good design, but I don't think it is a prerequisite. Good OO design is probably achievable.
Yep I agree, I think we must consider metafunctions and free function not as a goal or proof of good design but as a more powerful tool that we can use if things go too complicated. Anyway, I'll give it a try to compare the resulting code, on library side and (most important) on user side. Regards Bruno