$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] [units] unit conversion on construction in relation to argument passing
From: alfC (alfredo.correa_at_[hidden])
Date: 2011-03-25 01:04:08
Hi,
 Boost.Units offers automatic conversion (if conversion factor is
defined) on construction of variables:
 quantity<cgs::lengh> A = 4.*cgs::centimeter;
 quantity<si::length> a(A);
nice! But for some reason I believe this would work for argument
functions
double f(quantity<si::length> v){ return 1.;}
...
 quantity<cgs::lengh> A = 4.*cgs::centimeter
 f(A);   // doesn't work! not matching function
why is this? isn't the argument of the call a sort of construction
argument for the function argument, or is more like a plain
assignment. Is there a way to force the automatic conversion of the
function call.
Or I am forced to use this other long call?
 f(quantity<si::length>(A));
Thanks
Alfredo
Full code:
#include<boost/units/systems/si.hpp>
#include<boost/units/systems/cgs.hpp>
double f(quantity<si::length> v){ return 1.; }
 int main(){
     quantity<cgs::length> A(4.*cgs::centimeter);
     f(A); //not matching function
     return 0;
 }