|
Boost : |
Subject: Re: [boost] Units of data
From: Matthias Schabel (boost_at_[hidden])
Date: 2009-07-02 15:07:28
> void foo()
> {
> using boost::units::quantity;
> using namespace boost::units::data_capacity;
>
> //Both of these fail with the message that there is no
> conversion to the destination
> //type because the construcor is explicit
> quantity<data_capacity> compressed_size = 1000 * bytes;
> quantity<data_capacity, int> compressed_size2 = 1000 * bytes;
Implicit conversion is not allowed, and default value type is double -
try :
quantity<data_capacity> compressed_size(1000.0*bytes);
quantity<data_capacity,int> compressed_size2(1000*bytes);
> //Succeeds but gives a horribly long warning about conversion from
> 'double' to 'const int'
> //at file 'boost/units/detail/conversion_impl.hpp(342)', reference to
> class template instantiation at
> //boost/units/quantity.hpp(182)
> quantity<data_capacity, int> compressed_size3(1000 * bytes);
> }
If I remember correctly, this stems from the use of double precision
in the conversion code. I think it would be difficult to get rid of
this - most computations involving unit conversions do not involve
exact integer arithmetic...
Matthias
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk