>>656
トリッキーかどうかはともかく。
ttp://www.kmonos.net/alang/boost/classes/mpl.html
のcreate_implが近いかも。

template<int no>
struct Flag{
  enum{value=no};
};

void foo(const Flag<1> &,int value);
void foo(const Flag<2> &,int value);
void foo(const Flag<3> &,int value);

class Flag1Alias:public Flag<1>{};
typedef Flag<1> Flag1Alias2;

foo(Flag<1>(),12);
foo(Flag1Alias(),12);
foo(Flag1Alias2(),12);

というかLoki::Int2Typeでいいのでは、と思ったり。この場合。
まあ識別子名が使えるからいいかなと思うけど。