
Is there any interest in a library that performs strict type checking on values with unit quantities? The intent is to prevent operation and assigment of unlike types. For example, if A is in meters/second, and B is in seconds: -A * B results in a value with "meters" units -A / B results in a value with "meters/seconds^2" -A = B results in an exception due to a mismatch The code I have so far supports arbitrary unit types via tokens, which have to be defined for a project. Some example code looks like (with several notation options): typedef UnitValue<float> uFloat; UnitType unit_m( 1 ); //define meters type UnitType unit_s( 2 ); //define seconds type uFloat time( unit_s ); time = unit_s( 3.0f ); //3 seconds uFloat speed( unit_m / unit_s ); speed = 15 * speed.Type(); //set speed of 15m/s uFloat accel( unit_m / unit_s / unit_s ); accel = speed / time; //results in 5m/s^2 accel = speed; //throws exception, m/s != m/s^2 time = accel; //throws exception, s != m/s^2 The library has a price for performance compared to native value operations. However, part of the requirements will be a flag (a #define ) that turns off the unit processing for the code, which effectively removes the classes (replaces the UnitValue simply with typedefs of the stored type). -- edA-qa mort-ora-y Idea Architect http://disemia.com/