From: Andy Little (andy_at_[hidden])
Date: 2005-10-11 12:59:57
"Matt Calabrese" wrote
> The example you gave is actually a barycentric combination with all weights
> equal. Just like in geometry, this does not mean that the addition operator
> should be defined for points to perform component-wise addition.
> Instead, I
> provide a "componentwise_add" function for such rare cases, and I will also
> be making a set of average and a barycentric combination functions to
> abstract away the concepts.
FWIW in pqs I worked very hard to make sure that operations worked smoothly
without "rare cases". This approach made for ease of use with simple syntax.
The other area I worked hard at was dimensionless results for which I returned
the promoted value_type of the operands. It would have been easy to provide a
dimensionless quantity but this too would fail in "rare cases".
>> Are there not subtleties with temporaries using ET that users need to know
> I don't see a good reason to convert to the most fine-grained unit type. If
> anything, that can only cause more conversions which could not only make the
> expression less-optimized, but also have less-precise results depending on
> the value_type of the operands. I decided that determining the type to
> convert to be context is the best solution.
What would you output in a case such as :
std::cout << millimeters(1) / seconds(1);
Have you thought about stream output ?
> Adding new classification types and new unit types is actually very simple
> at the moment. For derived classification types, it's as simple as:
> Making new derived units is just as easy:
> typedef unit< miles, per< hour > > mph;
> // or
> typedef typeof( miles() / hour() ) miles_per_hour;
What do you do when two quantities have the same dimensional signature eg torque
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk