Информация об изменениях

Сообщение Re: void* p=false; от 21.04.2017 9:29

Изменено 21.04.2017 9:29 rg45

Re: void* p=false;
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>%SUBJ% откомпилировался без проблем [VS2017].

КД>С моей измученной нарзаном точки зрения, это не правильно.
КД>Неявное приведение указателя к bool — это, в принципе, нормально.
КД>А вот обратно — это явно ненормально.
КД>Что думаете по этому поводу?

Старые компиляторы обрабатывают 'false' обрабатывают по тем же правилам, что и литеральный ноль. Простая замена 'false' на 'true' приводит к ошибке компиляции. В новых же компиляторах уже и 'false' обрабатывается по специальным, более строгим, правилам.
Re: void* p=false;
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>%SUBJ% откомпилировался без проблем [VS2017].

КД>С моей измученной нарзаном точки зрения, это не правильно.
КД>Неявное приведение указателя к bool — это, в принципе, нормально.
КД>А вот обратно — это явно ненормально.
КД>Что думаете по этому поводу?

Старые компиляторы обрабатывают 'false' по тем же правилам, что и литеральный ноль. Простая замена 'false' на 'true' приводит к ошибке компиляции. В новых же компиляторах уже и 'false' обрабатывается по специальным, более строгим, правилам.