The main point here is to show that `a[b]` and `b[a]` are the same thing where one is a pointer and the other is an integer. It also shows random stuff you can do with templates. ```cpp #include template void boing(const char* s) { T a[4]; T* aa = &(a[X]); T* aaa = &(X[a]); printf("%20s: %lu (%d) -- %p %p\n",s,sizeof(T),X,aa,aaa); } int main() { boing("char"); boing("int"); boing("long"); } ``` Output ``` char: 1 (9) -- 0x7fff4592680d 0x7fff4592680d int: 4 (9) -- 0x7fff45926814 0x7fff45926814 long: 8 (17) -- 0x7fff45926868 0x7fff45926868 ```