$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Matthias Schabel (boost_at_[hidden])
Date: 2007-01-19 14:33:06
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