Pre-C++ 11 sappiamo che cortocircuito e l'ordine di valutazione sono necessari per l'operatore &&
a causa di:sicura di valutazione di corto circuito in C++ 11
1.9.18
nella valutazione dei seguenti espressioni
a && b a || b a ? b : c a , b
utilizzando il built-in di significato gli operatori in queste espressioni, , c'è un punto di sequenza dopo la valutazione della prima espressione (12).
Ma sequenza di punti non esistono più in C++ 11, quindi dove è la parte standard che dice:
if (ptr && ptr->do_something())
{
}
è sicuro?
[expr.log.and]/2 – chris
I punti di sequenza non garantiscono comunque un cortocircuito. (Ovviamente l'operatore ',' non può eventualmente corto circuito.) È comunque necessario disporre delle specifiche dell'operatore per garantirlo. –