Подтвердить что ты не робот

Является ли оценка короткого замыкания гарантированной в С++, как в Java?

В Java я использую

if (a != null && a.fun());

используя все преимущества оценки и выражения короткого замыкания, оцениваются слева направо?

В С++ я могу сделать то же самое? Гарантируют ли они переносимость на разных платформах и компиляторах?

if (a != 0 && a->fun());
4b9b3361

Ответ 1

Да, это гарантировано для "встроенных" типов. Однако, если вы перегружаете && или || для ваших собственных типов, короткозамкнутая оценка НЕ ​​выполняется. По этой причине перегрузка этих операторов считается плохой.