Pre-C++ 11 wissen wir, dass ein Kurzschluss und Auswertung, um für Betreiber &&
wegen erforderlich sind:Sicheres Kurzschlussauswertung in C++ 11
1.9.18
bei der Auswertung der folgenden Ausdrücke
a && b a || b a ? b : c a , b
mit dem eingebauten in der Bedeutung von die Operatoren in diesen Ausdrücken, gibt es einen Sequenzpunkt nach der Auswertung des ersten Ausdrucks (12).
Aber Sequenzpunkte existieren nicht mehr in C++ 11, also wo ist der Standard-Teil, der sagt:
if (ptr && ptr->do_something())
{
}
sicher ist?
[expr.log.and]/2 – chris
Die Sequenzpunkte garantieren keinen Kurzschluss. (Offensichtlich kann der "Operator" nicht kurzgeschlossen werden.) Um dies zu gewährleisten, benötigen Sie immer noch die aktuelle Operator-Spezifikation. –