$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andy Little (andy_at_[hidden])
Date: 2004-09-03 15:37:42
"Aleksey Gurtovoy" <agurtovoy_at_[hidden]> wrote
>
> The arithmetic, comparison and bitwise metafunctions are `polymorphic`,
> and can operate on a variety of numeric types, including rational,
> fixed-point and complex numbers. The metafunctions allow `mixed
arithmetic`,
> meaning that you can perform an operation on the arguments of different
> types, and the result will yeild the largest/most general of the arguments
> types. The infrastructure is provided to allow easy plugging of
user-defined
> numeric types which can be made freely intermixable with predefined
> library types. See
>
http://cvs.sourceforge.net/viewcvs.py/boost/boost/libs/mpl/test/numeric_ops.cpp?view=markup
> for an illustrative example.
Do numeric_cast template parameters have same order as
boost::numeric_cast. It looks like not.
(I'm afraid I dont understand mpl enough to really tell)
"boost/numeric/cast.hpp"
namespace boost{
template <typename Target, typename Source>
some_type
numeric_cast ( Source S);
}
//..........
namespace boost { namespace mpl {
template<> struct numeric_cast< integral_c_tag,complex_tag >
{
template< typename N > struct apply
: complex< N, integral_c< typename N::value_type, 0 > >
{
};
}; }}
If so ... Is this not a lurking bug waiting to happen?
Note however that run_time numeric_cast Source parameter would not be
deducible if changed, I think.
Other similar inconsistency is (I think) is_convertible).
This apart the changes look to me very agreeable with my limited knowledge.I
did try mpl once but I think I hit the oddities referred to above. I guess
the tagged integral_c types are intended for type safety in arithmetic? If
so they are extremely useful from point of bringing mpl to user.
regards
Andy Little