A avaliação de curto-circuito é garantida em C ++ como é em Java?

Em Java, eu uso

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

aproveitando ao máximo a avaliação e a expressão de curto-circuito são avaliadas da esquerda para a direita?

Em C ++, posso fazer o mesmo? Eles são garantidos para portáteis em diferentes plataformas e compiladores?

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

Sim, é garantido para os tipos “incorporados”. No entanto, se você sobrecarregar && ou || para os seus próprios tipos, a avaliação de curto-circuito NÃO é executada. Por esse motivo, sobrecarregar esses operadores é considerado uma coisa ruim.

Sim. && e || curto-circuito em C e C ++; é garantido pelo padrão.

Veja também: Os operadores lógicos de curto-circuito são obrigatórios? E ordem de avaliação?