ごめん特殊化ってどうやるんだっけ。
なれない事はするもんじゃないね。
えーと

const FOO;
template <int FOO> class foo{...};
template<> foo<0>{...};

こうだっけ?

まあとにかく、C++ならマクロは使わないでもいけるんじゃないかなーと言いたかったのです。
すまん、がんばって勉強すっから許して。