Listing 3 Illustrate unexpected results of compiling a template

template <const int i>
class INTEGER
   {
#if i == 0
   int val;
#elif i == 1
   char val;
#elif i == 2
   long val;
#endif
   };

should yield:

INTEGER<0> two_bytes;
INTEGER<1> one_byte;
INTEGER(2) four_bytes;
//sizeof OPERATOR SHOWS THAT EVERY INSTANTIATION
//OF val IS OF
TYPE int.