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 ( ) ;
   }
} ;