Pre-C++ 11, мы знаем, что короткое замыкание и порядок оценки необходимы для оператора &&
из:Безопасная оценка короткого замыкания в C++ 11
1.9.18
при оценке следующих выражений
a && b a || b a ? b : c a , b
с помощью встроенного в значении операторы в этих выражениях, , есть точка последовательности после оценки первого выражения (12).
Но последовательность Баллов больше не существует в C++ 11, так, где это стандартная часть, которая говорит:
if (ptr && ptr->do_something())
{
}
безопасно?
[expr.log.and]/2 – chris
Точки последовательности не гарантируют короткое замыкание в любом случае. (Очевидно, что 'operator,' не может быть короткого замыкания.) Вам все еще нужна фактическая спецификация оператора, чтобы гарантировать это. –