przygotowujące do C++ 11 wiemy, że zwarcie i porządek oceny są wymagane dla operatora &&
powodu:Bezpieczne ocena zwarcie w C++ 11
1.9.18
w ocenie następujących wyrażeń
a && b a || b a ? b : c a , b
wykorzystaniem wbudowanego w rozumieniu operatory w tych wyrażeniach, , jest punkt sekwencji po ocenie pierwszego wyrażenia (12).
Ale sekwencja punkty już nie istnieją w C++ 11, więc gdzie jest standardową częścią, która mówi:
if (ptr && ptr->do_something())
{
}
jest bezpieczne?
[expr.log.and]/2 – chris
Punkty sekwencyjne nie gwarantują żadnych zwarć. (Oczywiście 'operator,' nie może ewentualnie zwarcia.) Nadal potrzebujesz rzeczywistej specyfikacji operatora, aby to zagwarantować. –