
"David Abrahams" wrote
As it stands these two typedefs are normalized versions of the Numerator and Denominator parameters.
If you're trying to save cycles at compilation time by normalizing lazily, then of course the numerator and denominator typedefs can't be normalized. So, sure, typedefs for the template arguments sound fine to me.
I wouldnt mind this from a practical point of view. I believe that Cromwells implementation of gcd is overkill for my needs, so I guess that would make it easier to customise. Overall though I am opposed to it because I believe the current interface is superior from a users point of view and its a classic case of optimisation ruling the interface. In the case of dimensional analysis in a quantity, it seems to be perfectly possible to mix rationals and integral constants in a mpl container, though some care needs to be taken with the maths ( It may be worth using a custom division operator). In use for dimensional analysis rationals are actually pretty rare (integral constants can be substituted in the vast majority of cases) and all rationals used have a very small range of values, so I hope that any poor compile time performance of rationals will not have such a great effect. In fact I think that division is the only operation where extra care is required though any operation involving a rational requires normalisation if its involved in math and comparisons etc. I guess it might be worth getting Cromwell Enage's view as to whether he feels changing the current interface is worthwhile. regards Andy Little