$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andy Little (andy_at_[hidden])
Date: 2006-08-21 20:20:50
"Dave Steffen" <dgsteffen_at_[hidden]> wrote in message
news:17642.19283.854773.973499_at_yttrium.numerica.us...
> I don't know how to do that, but I'm absolutely sure it's what your
> users want.
Sorted as a quick test in my local copy of Quan FWIW.
I added a metafunction to query the unit :
allow_implicit_unit_conversions<StaticUnit>::type // bool_ true or false
(of fixed_quantity<StaticUnit,NumericType>)
Modified the fixed_quantity ctor to query the unit.
added a conditional explicit ctor allowing conversions and voila:
#include <quan/length.hpp>
int main()
{
quan::length::m L1(1);
quan::length::mm L2 = L1; // line 6
L1 + quan::length::m(L2); // ok
}
e:\Projects\Test\test.cpp(6) : error C2440: 'initializing' : cannot convert from
'quan::length_<Value_type>::m' to 'quan::fixed_quantity<StaticUnit,NumericType>'
with
[
Value_type=quan::quantity_traits::default_value_type
]
and
[
StaticUnit=quan::meta::unit<quan::meta::components::of_length::abstract_quantity,quan::meta::si_unit::milli>,
NumericType=quan::quantity_traits::default_value_type
]
Constructor for class 'quan::fixed_quantity<StaticUnit,NumericType>' is
declared 'explicit'
with
[
StaticUnit=quan::meta::unit<quan::meta::components::of_length::abstract_quantity,quan::meta::si_unit::milli>,
NumericType=quan::quantity_traits::default_value_type
]
Also works for addition etc.
In this quick mod a Macro decides whether the particular implementation of a
StaticUnit returns true or false.
but you could create a Static where that is a policy parameter I guess.. I'm not
sure if this is important enough to do that, but if it is, it is no great
problem to add it.
regards
Andy Little