プログラミングC++ bool型を使うのをやめてみよう

 長年当たり前の様にC++でサポートされているbool型を使ってきましたが、ここにきて要らないかも、と思うようになりました。言い直すと、あってもなくても良い、なのですが、やはりどうも使い勝手が悪いです。
 boolはソースコードの上で真偽条件を判断するために見やすいですが、状態を2つしか表現できず、見やすさ以外のメリットが見当たりません。関数の返り値をboolにしようものなら、最初はこれでいいやと思っていても、後からもっと多様な値を返したくなる、ということはよく有ります。関数からのアウトプットは返り値からしか得られないわけではなく、参照引数やポインタ引数を用いても得られるのですが、それらを考慮しても、返り値の表現範囲を狭める理由がないという結論に至りました。
 で、見やすさというメリットはboolにしかないのか、ということなのですが、そんな事はありません。#defineやtypedefで、整数値等に適当に名前を付けて状態名として扱ってしまえば、多様な表現が出来るわけです。TRUEやFALSEもそうです。MFCではそうなっています。
 ということで、今更boolいらんよな、ということになったので、これからあまり使わない方針で作業するよう心がけます。しかし、この方針はboolを使う方針を完全否定するわけではありません。使いたい人は使いましょう。