なんかバグってるなあと思ったら(2)

map< complex<double>, int > m;
int a;
// ...
int id = m[a];

C++に型があると思っていた時代が私にもありました再び。(ちなみにcomplexにはoperator<を勝手に定義してある)

ちなみに犯人は

  template<typename _Tp>
    inline 
    complex<_Tp>::complex(const _Tp& __r, const _Tp& __i)
    : _M_real(__r), _M_imag(__i) { }

こいつ。

complex c = 1.23; とかやりたいんだろうけどさ、こう暗黙に型変換やらコンストラクタ呼び出しやらをされると何が起こってるかわかんないって。