Template parameters

Model of

Type requirements

T must define a cast operator to unsigned long, and unsigned long must be castable to the T type.
T must define << and >> operators in order to use the ASCII input/ouput algorithms (wich is already good if we assume T being a model of alphabet).