I know the ternary operator has some surprising restrictions, but I was a bit baffled that this fails to compile for me:
void foo(bool b)
{
int* ptr = ((b) ? NULL : NULL);
}
Obviously that's the minimum needed to show the problem. The error is:
[BCC32 Error] Unit11.cpp(20): E2034 Cannot convert 'int' to 'int *'
Compiler is the less-than-100%-conforming Embarcadero C++Builder 2010, so a compiler bug is far from impossible...
NOTE: Parens modified to avoid confusion about my intent.
NOTE2: I'd got myself a little confused about how I'd arrived at this construct in the first place, so here's my excuse: I was getting some compilation errors on a line like a = b? c : d
, where b, c and d were all complex expressions. To narrow it down, I replaced c
and d
with NULL
s in order to check if b
was the culprit. At this point, everything went to hell in a handcart.