質問です。weak_ptr<T>とintの双方向マップがやりたかったので

boost::bimap<weak_ptr<T>,int> bm;

とやったらweak_ptrはハッシュにできないのでエラーになりました。よく考えると当たり前ですね。
仕方ないのでとりあえずunordered_mapと組み合わせて

boost::bimap<T*,int> bm;
unordered_map<T*, weak_ptr<T>> um;

この2つをセットで用いてるんですが、なんか不格好というか・・・
もしかして変なことしてますかね自分?