
Steven - are you OK with the changes I've committed to the sandbox? I'm still not 100% happy with the angle syntax, but it isn't obvious to me how to improve it...
You're misusing dimensionless_quantity....
Not sure what you mean - I need to preserve system information in dimensionless quantities to make the trig functions properly invertible : that is acos(cos(theta)) == theta should hold true...
Did you run the tests and examples?
The only one that needed changing was test_dimensionless_quantity because mutating value() had not been removed and there were a number of tests relying on that. I'll remove them and put together a test on quantity_cast/from_value when the syntax is stable...
I'm also a little concerned about the runtime optimization issues raised - I'll take a look at the assembly generated by gcc. I was particularly surprised by the Intel compiler performance. I believe Intel bought the KAI C++ compiler that was well known to be extremely good at optimization in the presence of template code (in particular expression templates)...
We could try comparing it to a simple wrapper. If that is slower than double than there is nothing we can do to improve perfomance.
I agree; I'll look into seeing how difficult it would be to have a non-dimension checking quantity wrapper class that allows us to preserve syntax but doesn't bother to do metaprogramming. Conversions will clearly be a problem in this case... Matthias