The various floating point type classes differ only in their bounds. Consequently, a template is used to build up the required type classes automatically:
template<class R> class float_type : public float_base { ... };
R
denotes the corresponding floating point type info
class. Note, only static methods defined in the class are executed here.