TODO FOR CUJ PAPER: - Try making template class phys_quan<*> a friend of phys_quan, then won't need friend function declarations (except operator<< ) Make all * and / in-line member functions - Finish literature (web) search for similar libraries that already exist - Take one last shot at VC++ compatibility - Write CUJ paper (include design criteria) (include performance results) (offer to boost list readers) - Split headers si_units.hpp, si_units_ext.hpp, imperial_units.hpp, imperial_units_ext.hpp - Clean up columns and un-tabify all source files TODO FOR BOOSTIFICATION: - Templatize io for basic_stream - Properly comment source code - Convert demo to full-blown regression test suite - Add all units/types from NIST pdf document (document which is SI vs. which is imperial, put all in alphabetical order, make all definitions in terms of base units, clean up columns, include reference to online pdf doc at NIST) group by type IDEAS FOR FUTURE ENHANCEMENTS: - Add/figure out rad vs. roentgen, specific heat vs. entropy, etc. - Templatize for base numeric type (float, double, long double, user-defined) how? maybe try "template< NUMERIC > class xyz_t : public phys_quan< ... > {};" - Include cross-conversion, e.g "length_t< double > = length_t< float >" - Add any_phys_quan, including conversions to/from phys_quan<> ( needs explicit ctor(anypq) and operator anypq() inside phys_quan<> ) ( needs ctor( double ) and double to_double() inside anypq ) - Write calculator demo - Add io manipulator to switch output to table of specific preferred units (include a default table of at least SI units like N and J) - Add io manipulator to switch output to html exp format - Add a smart operator>>() for input that uses a table of units (and include a default table of all the predefined units) - Write Java version of any_phys_quan and calculator demo