Boost.units autoscaling doesn't seem to work with the measurement type.

I have previously used Boost.Units and autoscaled using << engineering_prefix nicely, and this works as expected for quantity of type double. but it seems that code that I believe worked previously does not autoscale when using a *user-defined type*, like the measurement example in kitchen_sink.cpp. To confirm this, I have added after //[kitchen_sink_snippet_8 in kitchen_sink.cpp at line 445 a measurement quantity where the length is long enough to trigger conversion to km, thus quantity<length,measurement<double> > biglen(measurement<double>(12345.0,123.0)*meters); std::cout << "Biglen autoscaled "<< engineering_prefix << biglen << std::endl; but I get a *unscaled* value :-( Biglen autoscaled 12345(+/-123) m rather than the expected conversion to kilometers 12.345(+/- 0.123) km Am I doing something wrong, or has something changed? Thanks Paul PS Using Microsoft Visual Studio 2010 Version 10.0.40219.1 SP1Rel Microsoft .NET Framework Version 4.0.30319 SP1Rel Boost-trunk (Boost.1.49) --- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow@hetp.u-net.com

-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Paul A. Bristow Sent: Thursday, April 26, 2012 6:29 PM To: boost@lists.boost.org Subject: [boost] Boost.units autoscaling doesn't seem to work with the measurement type.
I have previously used Boost.Units and autoscaled using << engineering_prefix nicely, and this works as expected for quantity of type double.
but it seems that code that I believe worked previously does not autoscale when using a *user-defined type*, like the measurement example in kitchen_sink.cpp.
To confirm this, I have added after //[kitchen_sink_snippet_8 in kitchen_sink.cpp at line 445
a measurement quantity where the length is long enough to trigger conversion to km, thus
quantity<length,measurement<double> > biglen(measurement<double>(12345.0,123.0)*meters); std::cout << "Biglen autoscaled "<< engineering_prefix << biglen << std::endl;
but I get a *unscaled* value :-(
Biglen autoscaled 12345(+/-123) m
rather than the expected conversion to kilometers
12.345(+/- 0.123) km
I have re-run this on an old machine using VS2008 and a pre-release version of autoprefix dated about Mar 2010 and If include I:\units_autoprefix as the source of units code quantity<length,measurement<double> > big_len(measurement<double>(123456.0,1234.0)*meters); std::cout << engineering_prefix << big_len << std::endl; outputs the desired autoscaled values 123.456(+/-1.234) km Wishing to avoid where angels fear to tread, I have not tried to examine differences between the versions ;-) Please tell me if I can provide any more information. Paul --- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow@hetp.u-net.com
participants (1)
-
Paul A. Bristow