
Hi Janek,
I want to thank you very much for your effort. My time currently is very limited, so I had a chance for a very short glance at your examples. And I liked very much what I've seen.
Thanks for the encouragement - I'm actually on vacation right now (as embarrassing as that is to admit), so I've had some time to devote to getting things shaped up... I certainly appreciate the feedback - please keep it coming as you find time to look at the library in more detail...
I recalled another common request: some people wanted to add currency and unit conversions between various currencies (using a multiplier that can change during the program run). I work in engineering so it's not for me. But for those people who need it, will it be possible?
I recall the same; my opinion is that the full dimensional analysis machinery is probably overkill for this kind of application as I have a hard time envisioning units like $ m/s^2 being useful, but it should be possible, again, by currencies as value types...something like this: // currency unit systems struct currency_system { }; struct currency_tag : public ordinal<1> { }; typedef dimension< boost::mpl::list< dim< currency_tag,static_rational<1> > > >::type currency_type; typedef unit<currency_system,currency_type> currency; class us_dollar { ... }; class canadian_dollar { ... }; quantity<currency,us_dollar> usd(us_dollar(date1)); quantity<currency,canadian_dollar> cd(canadian_dollar(date2)); This way the value_type takes care of all the conversions (say to and from constant US dollars fixed at a certain date or however you like) and all the units library does is keep track of the fact that the quantity is a currency. By doing this, everything is completely decoupled. If implicit conversion of currencies is supported, this is transparent through quantity... Matthias