Я знаю, что у тернарного оператора есть некоторые удивительные ограничения, но я был немного озадачен тем, что он не компилируется для меня:
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, поэтому ошибка компилятора далеко не невозможна ...
ПРИМЕЧАНИЕ: Родители изменены, чтобы избежать путаницы в моих намерениях.
ПРИМЕЧАНИЕ2: Я немного запутался в том, как я вообще пришел к этой конструкции, поэтому вот мое оправдание: я получал некоторые ошибки компиляции в строке вроде a = b? c: d
, где b, c и d были сложными выражениями. Чтобы сузить круг вопросов, я заменил c
и d
на NULL
s, чтобы проверить, не виновата ли b
. В этот момент все пошло к черту в ручной тележке.