Проблема преобразования указателя с помощью тернарного оператора

Я знаю, что у тернарного оператора есть некоторые удивительные ограничения, но я был немного озадачен тем, что он не компилируется для меня:

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 . В этот момент все пошло к черту в ручной тележке.

20
задан Roddy 25 July 2011 в 17:25
поделиться