1) 16bit- and 64bit-long signed and unsigned types are added;
2) a single template is used to build up all int types