$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Deane Yang (deane_yang_at_[hidden])
Date: 2004-01-22 21:52:57
Daniel Frey wrote:
>
> The problem with constants is generic programming. Consider:
>
> template< typename T > T area( const T& r ) {
> return pi * r * r;
> }
>
> Now think of different T's, mixed arithmetics, loss of precision, no
> conversion from double to T (e.g. boost::rational, Roguewave's
> RWDecimal<>, ...). You need a pi in the above example which is truly
> generic. *That* is what I'm working on, the syntax pi vs. pi() is just
> syntactic sugar (although I strongly prefer pi over pi()). More on that
> when I finished the restructuring due to the unit libraries :)
>
You can do that? That would be absolutely awesome.
But are you really trying to coordinate with the unit libraries?
If so, shouldn't the function be something like
template< typename length_units, typename area_units>
area_units area( const length_units& r )
{
return pi * r * r;
}
Can you really implement "pi" so that it is able to look inside "r"
and figure out what numeric type "pi" should be?