
AMDG Noah Roberts <roberts.noah <at> gmail.com> writes:
4) Any comments on implementation from those brave enough to look at the guts of the library would be especially welcome.
Since this library is heavily based on MPL it should use MPL constructs. Multiplying dimensions for example should be done with mpl::times<> instead of creating a new operator (multiply<>) for that purpose.
Not necessarily. static_multiply has to be able to operate on an mpl::list.
It would also be good if the concepts were documented with concepts (the boost::concepts library) and enforced in algorithms.
I don't think it matters much. Have you tried something that should be illegal but worked or gave an incomprehensible error message?
There is also a lack of meta functions to identify units and quantities as types (only dimensions have this functionality) for use in such things as enable_if and other meta programming utilities.
Good point.
I also disagree with the assessment that runtime unit conversions are unnecessary. It is my contention that the more common use for a unit library is to do conversions at runtime with minimal cost in an easy and efficient (from programmer perspective) way. Compile time dimension enforcement is a very useful tool but compile time unit enforcement without runtime conversion and unit selection is not. The target audience for this library, as specified, seem too small to warrant boost inclusion.
That's my take.
I don't understand what you want beyond what is provided in conversion.hpp systems/si/convert_si_to_cgs.hpp, and systems/cgs/convert_cgs_to_si.hpp In Christ, Steven Watanabe