>>793
> if文にshared_ptrオブジェクトを持ってきたら、このoperator bool_typeに
> 暗黙の変換が行われて、さらにboolに暗黙の変換が行われるわけですよね。
No. 「if( X ) expr」 は、
 X==0 でないなら expr を実行して、 X==0 なら expr を実行しない、つーだけだ。
んで、Xがshared_ptr<>だったらコンパイラは、==0できるような型への
変換を探して、よっしゃ operator bool_type() があったぞっつーことで
bool_typeに変えてから ==0 で比較して終わり、だ。boolの出る幕はどこにも無いなり。