三項演算子には驚くべき制限があることは知っていますが、これがコンパイルに失敗することに少し戸惑いました。
void foo(bool b)
{
int* ptr = ((b) ? NULL : NULL);
}
明らかに、それは問題を示すために必要な最小限です。エラーは次のとおりです。
[BCC32 Error] Unit11.cpp(20): E2034 Cannot convert 'int' to 'int *'
コンパイラは100%未満のEmbarcadero C ++ Builder 2010であるため、コンパイラのバグは不可能ではありません...
注:Parensは、私の意図についての混乱を避けるために変更されました。
注2:そもそもこの構成に到達した方法について少し混乱したので、言い訳をしますa = b? c : d
。b、c、dがすべて複雑な式であるなどの行でコンパイルエラーが発生していました。 。それを絞り込むために、原因が原因であるかどうかを確認するためにc
、とd
をNULL
sに置き換えましb
た。この時点で、すべてが手押し車で地獄に行きました。