at first i thought that the boost library came with it's own implementation of a c preprocessor, as i thought that was the only way it could be doing all that iteration (multiple "patterned" declarations, etc, etc) and the c standard hasn't introduced a notion of counters... i've considered concatenation, but that incurs a "final" string to be compared which cannot be generated automatically a priori (correct me if i'm mistaken). but when i looked at boost thoroughly, it seems to be doing everything in standard. so can anybody tell me how that is done?

a sort of pseudo-code for doing this will be very helpful:

#define MULTIPLE_ENUMS(my_enum, n)
/* ^ will declare n enumerations using prefix "my_enum" and having concatenated 0 to n each.

optional:
       having ALL the minimum value of each enum be 0 (easy) and maximum values for each multiplied by a magnitude of 2
       starting from an initial value (which then becomes):

       #define MULTIPLE_ENUMS(my_enum, init, 5)
  */

i know this may sound trivial and totally beginner-like, but can anyone explain it to me, as i don't have the whole day just trying to decipher everything out.