Boost logo

Boost :

From: Cromwell Enage (sponage_at_[hidden])
Date: 2005-09-20 15:24:35


Scattered throughout the metamath library are template
specializations of numeric metafunction classes like
the following:

template <>
struct times_impl<
    integral_c_tag
  , metamath::double_c_tag
>
{
    ...
}

The purpose of mpl::numeric_cast<> (or
BOOST_MPL_AUX_NUMERIC_CAST) is to render such
specializations unnecessary. I understand that if
template instantiation overhead is a problem then the
current situation is okay, but if we start
implementing more numeric metatypes such as
metamath::float_ and/or metamath::long_double_, then
the net increase in code size will become an issue.

Also included in the last update of my math sublibrary
are files from the metamath library that I modified to
make use of BOOST_MPL_AUX_NUMERIC_CAST:
* In <boost/metamath/double/double.hpp> I modified
double_c_tag so that it inherits from
boost::mpl::int_<8> (an arbitrary constant higher than
zero).
* In <boost/metamath/double/integral_to_double.hpp> I
added a template specialization of
BOOST_MPL_AUX_NUMERIC_CAST that uses
integral_to_double<>.
* In the other files I deleted the redundant
specializations.

Let me know what you think.

                              Cromwell D. Enage

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk