Да, сложите выражения, используя &&
или ||
, поскольку оператор может закорачивать, при условии обычного предостережения, которое случается для встроенного значения, но не для перегруженной функции оператора.
Значение выражения сгиба определено в [temp.variadic] / 9:
Реализация складного выражения производит:
((E_1
оп E_2)
оп ... )
оп E_N
для одинарного левого сгиба,
E_1
оп (
... оп (E_N_minus_1
оп E_N))
для одинарного правого сгиба,
(((E
оп E_1)
оп E_2)
оп ... )
оп E_N
для двоичной левой складки и
E_1
оп (
... оп (E_N_minus_1
оп (E_N
оп E)))
для двоичного правого сгиба.
В каждом случае op является оператором сгиба , ....
Поскольку создание выражения для сгиба происходит в терминах выражения, содержащего оператор, применяются все обычные правила для оператора, включая разрешение перегрузки, порядок вычисления и короткое замыкание при использовании встроенного оператора.