Listing 2
// Efficient implementation of a compile-time float.
template<int iMantissa, int iExponent = 0> struct CFloat
{
enum
{
mantissa = iMantissa,
exponent = iExponent
} ;
struct Negative
{
static const float Float ( ) { return float ( mantissa ) /
CPower<10, CAbs<exponent>::result>::result; }
} ;
struct Positive
{
static const float Float ( ) {
return mantissa * CPower<10, exponent>::result; }
} ;
operator const float ( ) const
{
return CIfThenElse<exponent <
0, Negative, Positive>::Result::Float ( ) ;
}
} ;