C++でboolの演算

パッと見で全然分からなかったバグコード

if(!this-IsComplete())
{
	return true;
}

想定の逆が返ってくるからなんだろうとよくみると、「this->」のつもりが「this-」になってた。
コンパイル通るもんだねぇ。
「!this - IsComplete()」つまり、thisアドレスに対して!した結果引くIsCompleteの結果ということ。
!thisは常にfalseになるので「false - (true or false)」という演算になっていた模様。
気になったからVS2008でbool同士の演算をやってみた

演算子 結果
true + true true
true + false true
false + true true
false + false false
true - true false
true - false true
false - true true
false - false false
true * true true
true * false false
false * true false
false * false false
true / true true
true / false error C2124: 除算、剰余演算が 0 で行われています
false / true false
false / false error C2124: 除算、剰余演算が 0 で行われています